我正在编写 Outlook 2007 插件。我正在做的就是:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.Folder root;
//creates Spam folder if it dosen't exist
if (!SpamFolderExist())
{
CreateSpamFolder();
}
root = (Outlook.Folder)this.Application.Session.DefaultStore.GetRootFolder();
//set BeforeItemMove event for spam and inbox folders
spamFolder = (Outlook.Folder)root.Folders["Spam"];
inboxFolder = (Outlook.Folder)this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
spamFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(BeforeItemMoveFromSpam);
inboxFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(BeforeItemMoveFromInbox);
//set new mail event
this.Application.NewMail += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_NewMailEventHandler(OnNewMail);
}
问题是,即使我在 BeforeItemMoveFromInbox 和 BeforeItemMoveFromSpam 方法中没有写任何东西,应用程序也会出现奇怪的行为。在我移动一些邮件后,它不再对特定邮件执行任何移动操作。似乎邮件被阻止了,我就是无法移动它。执行其他移动操作后,其他邮件将被阻止,并且可以移动先前被阻止的邮件。这个想法是,在一封邮件被阻止后,它总是至少有一封无法移动的邮件。换句话说,一些移动动作随机失败。我不得不说,除了将邮件从一个文件夹移动到另一个文件夹之外,我没有做任何其他事情,而且我没有收到任何错误消息。我还尝试在方法结束时将 BeforeItemMove 事件处理程序的取消参数设置为 false,但我得到了相同的行为。