我目前正在改进MS Outlook加载项以获取最终在垃圾文件夹中的电子邮件,其中包含" legit"地址,然后将它们移动到收件箱文件夹中。
对于Gmail地址而言,这是一个很多事情,对我们的工作人员来说有点费力,他们必须手动将这些电子邮件链接到他们的客户帐户。
有没人试过这个?我已经注册了传入的电子邮件事件处理程序,以便在收到电子邮件时读取垃圾邮件文件夹,但我不断收到异常。我怀疑这与其中一些电子邮件是垃圾邮件有关;这只是意味着MailItem会有很多错误。
有没有人有同样的问题?这是我的代码:
public void OutlookApplication_ItemReceived(string entryID)
{
//this.outlookNameSpace = this.application.GetNamespace("MAPI");
//Outlook.MAPIFolder inbox = this.outlookNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
//Outlook.MAPIFolder junkFolder = this.outlookNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderJunk);
if (Properties.Settings.Default.AutoLink || Properties.Settings.Default.EnableLeadLoader)
{
Outlook.MailItem mail = null;
try
{
this.Log("Email detected: incoming");
mail = this.application.Session.GetItemFromID(entryID) as Outlook.MailItem;
this.leadLoaderRecipient = Properties.Settings.Default.LeadLoaderRecipient.ToLower();
Outlook.Recipients recips = mail.Recipients; //That's where its crashing as the object is null... if read from spam folder
foreach (Outlook.Recipient recip in recips)
{
Outlook.PropertyAccessor pa = recip.PropertyAccessor;
string smtpAddress = pa.GetProperty(PR_SMTP_ADDRESS).ToString();
if (Properties.Settings.Default.EnableLeadLoader)
{
if (smtpAddress.ToLower() == this.leadLoaderRecipient)
this.ProcessLead(mail);
}
}
if (Properties.Settings.Default.AutoLink)
{
this.AutoLink(mail, true);
}
}
catch (Exception ex)
{
this.Log("Exception (ItemReceived): " + ex.ToString());
}
finally
{
if (mail != null)
{
Marshal.ReleaseComObject(mail);
}
}
}
}
期待你的想法! :) TIA!
答案 0 :(得分:0)
您的代码究竟何时运行?这是一个Application.NewMailEx事件处理程序吗?有什么例外?
尝试在垃圾邮件文件夹上使用Items.ItemAdd事件,而不是使用Application.NewMailEx。