How to check that outgoing Outlook Mail Item is with digital signature or encrypted from VSTO Add-in in C#?

How to check that outgoing Outlook Mail Item is with digital signature or encrypted from VSTO Add-in in C#?

  • Comments 2

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
http://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.

Leave a Comment
  • Please add 8 and 8 and type the answer here:
  • Post