C# 在Outlook.Interop类中以编程方式将项目从垃圾邮件文件夹移动到收件箱?
我目前正在完善一个MS Outlook加载项,以拾取那些最终位于具有合法地址的垃圾邮件文件夹中的电子邮件,然后将其移动到收件箱文件夹中 这是Gmail地址经常出现的情况,对于我们的员工来说有点辛苦,他们必须手动将这些电子邮件链接到他们的客户帐户 有人尝试过这个吗?我已经注册了传入电子邮件事件处理程序,以便在收到电子邮件时读取垃圾邮件文件夹,但我一直收到一个异常。我怀疑这与一些电子邮件是垃圾邮件有关;这仅仅意味着邮件项将有很多错误 有人有过同样的问题吗?这是我的密码:C# 在Outlook.Interop类中以编程方式将项目从垃圾邮件文件夹移动到收件箱?,c#,office-interop,outlook-addin,outlook-2010,mapi,C#,Office Interop,Outlook Addin,Outlook 2010,Mapi,我目前正在完善一个MS Outlook加载项,以拾取那些最终位于具有合法地址的垃圾邮件文件夹中的电子邮件,然后将其移动到收件箱文件夹中 这是Gmail地址经常出现的情况,对于我们的员工来说有点辛苦,他们必须手动将这些电子邮件链接到他们的客户帐户 有人尝试过这个吗?我已经注册了传入电子邮件事件处理程序,以便在收到电子邮件时读取垃圾邮件文件夹,但我一直收到一个异常。我怀疑这与一些电子邮件是垃圾邮件有关;这仅仅意味着邮件项将有很多错误 有人有过同样的问题吗?这是我的密码: public void Ou
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);
}
}
}
}
期待着您的想法,伙计们!:蒂亚 您的代码具体何时运行?这是Application.NewMailEx事件处理程序吗?例外情况是什么
尝试在垃圾邮件文件夹上使用Items.ItemAdd事件,而不是使用Application.NewMailEx。Hi@dmitry,这目前正在我实现的控制器中实现,该控制器运行我的OutlookApplication\u ItemReceived事件处理程序。我得到的例外是,我的MailItem作为null对象返回。将电子邮件发送到收件箱时不会发生这种情况。您是否尝试过垃圾邮件文件夹中的Items.ItemAdd事件?