我正在开发一个应该捕获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)
以下步骤在我身边很好用.
导入命名空间:
使用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)