以编程方式将项目从垃圾文件夹移动到Outlook.Interop类中的收件箱?

时间:2014-10-03 03:12:37

标签: c# office-interop outlook-addin outlook-2010 mapi

我目前正在改进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!

1 个答案:

答案 0 :(得分:0)

您的代码究竟何时运行?这是一个Application.NewMailEx事件处理程序吗?有什么例外?

尝试在垃圾邮件文件夹上使用Items.ItemAdd事件,而不是使用Application.NewMailEx。