在Outlook.Interop类中以程序方式将项目从“垃圾邮件”文件夹移动到“收件箱”

本文关键字:收件箱 垃圾邮件 移动 文件夹 Interop Outlook 程序 项目 方式 | 更新日期: 2023-09-27 18:25:22

我目前正在完善一个MS Outlook加载项,以提取最终在"垃圾邮件"文件夹中具有"合法"地址的电子邮件,然后将其移动到"收件箱"文件夹中。

这种情况在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!

在Outlook.Interop类中以程序方式将项目从“垃圾邮件”文件夹移动到“收件箱”

您的代码究竟什么时候运行?这是Application.NewMailEx事件处理程序吗?例外情况是什么?

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