捕获Outlook 2013发送事件

Ram*_*Ali 5 c# vsto

我正在开发一个应该捕获Outlook 2013 Send事件的应用程序.我使用C#项目来完成所需的任务.

特别是我使用以下代码来完成这项任务

public Outlook.Application OutlookApplication;
public Outlook.Inspectors OutlookInspectors;
public Outlook.Inspector OutlookInspector;
public Outlook.MailItem OutlookMailItem;
public delegate void ApplicationEvents_11_ItemSendEventHandler(object Item, ref bool Cancel);

applicationObject = application;
addInInstance = addInInst;
OutlookApplication = application as Outlook.Application;
OutlookInspectors = OutlookApplication.Inspectors;
OutlookInspectors.NewInspector += new InspectorsEvents_NewInspectorEventHandler(OutlookInspectors_NewInspector);
OutlookApplication.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(OutlookMailItem_Send);

string strchkTo = OutlookMailItem.To;
string strchk = "hello Welcome to c#";

OutlookInspector = (Outlook.Inspector)Inspector;
if (Inspector.CurrentItem is Outlook.MailItem)
{
   OutlookMailItem = (Outlook.MailItem)Inspector.CurrentItem;
}
Run Code Online (Sandbox Code Playgroud)

Asi*_*sif 8

以下步骤在我身边很好用.

  1. 创建共享添加.选择Outlook作为受支持的应用程序.
  2. 在"应用程序属性"页面中,将Outlook设置为启动程序.
  3. 添加对Microsoft Outlook 11.0对象库的引用.
  4. 导入命名空间:

    使用Outlook = Microsoft.Office.Interop.Outlook; 使用System.Windows.Forms;

5.替换原始系统生成的字段:

private object applicationObject;
private object addInInstance;
Run Code Online (Sandbox Code Playgroud)

使用以下新字段:(无ItemSend事件)

public Outlook.Application OutlookApplication;
public Outlook.Inspectors OutlookInspectors;
public Outlook.Inspector OutlookInspector;
public Outlook.MailItem OutlookMailItem;
Run Code Online (Sandbox Code Playgroud)

6.在OnConnection方法中,将所有系统生成的代码替换为以下代码:

OutlookApplication = application as Outlook.Application;
OutlookInspectors = OutlookApplication.Inspectors;
OutlookInspectors.NewInspector += new   Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(OutlookInspectors_NewInspector);
        OutlookApplication.ItemSend +=new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(OutlookApplication_ItemSend);
Run Code Online (Sandbox Code Playgroud)

7.添加事件处理函数OutlookInspectors_NewInspector:

 void OutlookInspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
  {
     OutlookInspector = (Outlook.Inspector)Inspector;
     if (Inspector.CurrentItem is Outlook.MailItem)
     {
                OutlookMailItem = (Outlook.MailItem)Inspector.CurrentItem;
     }

  }
Run Code Online (Sandbox Code Playgroud)

8.添加事件处理函数OutlookApplication_ItemSend:

 void OutlookApplication_ItemSend(object Item, ref bool Cancel)
 {
   string strchkTo = OutlookMailItem.To;
   string strchk = "hello Welcome to c#";
   MessageBox.Show(strchk + "\r\n" + strchkTo);
}
Run Code Online (Sandbox Code Playgroud)