我想在用户移动邮件项目时(从文件夹到另一个文件夹)执行某些功能。所以我想用outlook加载项捕获邮件项目移动事件。 我认为这应该可以使用以下事件处理程序,
MAPIFolderEvents_12_BeforeItemMoveEventHandler
ItemsEvents_ItemRemoveEventHandler
我尝试了上述两个事件句柄。但他们不适合我。有人可以提供一个例子。以下是MAPIFolderEvents_12_BeforeItemMoveEventHandler
的代码。
Outlook.Folder fldr;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
fldr = (Outlook.Folder)Application.Session.GetDefaultFolder(OlDefaultFolders.olFolderTasks);
fldr.BeforeItemMove += new Microsoft.Office.Interop.Outlook.
MAPIFolderEvents_12_BeforeItemMoveEventHandler
(Folder_BeforeItemMove);
}
private void Folder_BeforeItemMove(object anItem, MAPIFolder aMoveToFolder, ref bool Cancel)
{
Outlook.MailItem mailItem = (anItem as Outlook.MailItem);
//Do other stuff
}
答案 0 :(得分:0)
引发事件(fldr)的对象必须在类级别而不是本地级别声明,以避免被垃圾收集器释放。
答案 1 :(得分:0)
对于迭代MailFolders有类似的要求。
请尝试如下:
Outlook.MAPIFolder mapifldr; Outlook.Folder fldr;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
mapifldr=Application.Session.GetDefaultFolder(OlDefaultFolders.olFolderTasks);
fldr = (Outlook.Folder) Application.GetNamespace("MAPI").GetFolderFromID(mapifldr.EntryID);
fldr.BeforeItemMove += new Microsoft.Office.Interop.Outlook.
MAPIFolderEvents_12_BeforeItemMoveEventHandler
(Folder_BeforeItemMove);
}
这是一篇非常古老的帖子,但希望能为其他人节省时间。