How to check that outgoing Outlook Mail Item is with digital signature or encrypted from VSTO Add-in in C#?
How to capture whether user has checked to send Outlook Mail with digital signature or encrypted from VSTO Add-in in C# ?
We can use the following code snippet with VSTO SE Outlook Skeleton project to build sample add-in:
IMPORTANT NOTE: This add-in will only work if we are NOT using Word as default email editor.
/*NOTE: Following programming examples is for illustration only, without warranty either expressed or implied,
including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose.
This sample code assumes that you are familiar with the programming language being demonstrated and the tools used
to create and debug procedures.*/
1: using System;
2: using System.Windows.Forms;
3: using Microsoft.VisualStudio.Tools.Applications.Runtime;
4: using Outlook = Microsoft.Office.Interop.Outlook;
5: using Office = Microsoft.Office.Core;
6:
7: namespace OutlookAddin1
8: {
9: public partial class ThisApplication
10: {
11: private void ThisApplication_Startup(object sender, System.EventArgs e)
12: {
13: this.ItemSend +=new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(ThisApplication_ItemSend);
14: }
15:
16: private void ThisApplication_Shutdown(object sender, System.EventArgs e)
17: {
18: }
19: private Office.CommandBarButton EncButton = null;
20: private Office.CommandBarButton DigButton = null;
21: private void ThisApplication_ItemSend(object Item, ref bool Cancel)
22: {
23: Outlook.MailItem mItem = null;
24:
25: try
26: {
27: mItem = Item as Outlook.MailItem;
28:
29: EncButton = (Office.CommandBarButton) mItem.GetInspector.CommandBars.FindControl(Office.MsoControlType.msoControlButton , 718, Type.Missing, true);
30: if (EncButton.State == Office.MsoButtonState.msoButtonDown )
31: {
32: MessageBox.Show ("Mail will be Encrypted");
33: }
34:
35: DigButton = (Office.CommandBarButton)mItem.GetInspector.CommandBars.FindControl(Office.MsoControlType.msoControlButton, 719, Type.Missing, true);
36: if (DigButton.State == Office.MsoButtonState.msoButtonDown)
37: {
38: MessageBox.Show ("Mail will be Digitally signed");
39: }
40:
41: }
42: catch (Exception ex)
43: {
44: System.Windows.Forms.MessageBox.Show(ex.Message);
45: Cancel = true;
46: }
47:
48: }
49: #region VSTO generated code
50:
51: /// <summary>
52: /// Required method for Designer support - do not modify
53: /// the contents of this method with the code editor.
54: /// </summary>
55: private void InternalStartup()
56: {
57: this.Startup += new System.EventHandler(ThisApplication_Startup);
58: this.Shutdown += new System.EventHandler(ThisApplication_Shutdown);
59: }
60:
61: #endregion
62: }
63: }
Please refer to following article related to working with CommandBars in Outlook Solution:
How to Use CommandBars in Outlook Solutions
https://support.microsoft.com/kb/201095
The above article also have a Microsoft Excel Macro to generate a list of Outlook 2000/2003 CommandBar control IDs.
Comments
- Anonymous
November 10, 2008
PingBack from http://www.tmao.info/how-to-check-that-outgoing-outlook-mail-item-is-with-digital-signature-or-encrypted-from-vsto-add-in-in-c/ - Anonymous
December 09, 2009
Do you know if it works on outlook 2007 too ?