Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Outlook.Interop类中以编程方式将项目从垃圾邮件文件夹移动到收件箱?_C#_Office Interop_Outlook Addin_Outlook 2010_Mapi - Fatal编程技术网

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

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

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

这是Gmail地址经常出现的情况,对于我们的员工来说有点辛苦,他们必须手动将这些电子邮件链接到他们的客户帐户

有人尝试过这个吗?我已经注册了传入电子邮件事件处理程序,以便在收到电子邮件时读取垃圾邮件文件夹,但我一直收到一个异常。我怀疑这与一些电子邮件是垃圾邮件有关;这仅仅意味着邮件项将有很多错误

有人有过同样的问题吗?这是我的密码:

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事件?