使用唯一的Message-ID创建Outlook电子邮件

时间:2016-01-22 18:29:53

标签: c# email outlook vsto

我创建了一个C#应用程序,只要用户输入信息就会发送电子邮件。可以使用相同的应用程序向原始电子邮件发送回复。我的问题是Outlook没有对电子邮件进行分组,而是将每个电子邮件视为唯一的电子邮件。我已经读过可以使用Message-ID作为将电子邮件保持在一起的参考。但是,我无法找到有关如何将其应用到我的代码中的示例。

Outlook.Application olApp = new Outlook.Application();
Outlook._MailItem eMailItem = (Outlook._MailItem)(olApp.CreateItem(Outlook.OlItemType.olMailItem));

eMailItem.To = "username@domain.com";
eMailItem.Subject = pMailSubject;
eMailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
eMailItem.HTMLBody = pMailBody;

是否有办法设置唯一的Message-ID,以便每当发送有关特定主题的新电子邮件时,可以使用Message-ID将所有电子邮件保存在Outlook中?

1 个答案:

答案 0 :(得分:0)

您需要在收件箱中找到原始邮件,然后回复()。

try
{
  Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
  Outlook._NameSpace ns = app.GetNamespace("MAPI");
  ns.Logon(null, null, false, false);
  Outlook.MAPIFolder inboxFolder = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);

  // loop through the folder to find the email - match on subject
  for (int i=1; i <= inboxFolder.Items.Count; i++)
  {
    Outlook._MailItem item = (Microsoft.Office.Interop.Outlook._MailItem)inboxFolder.Items[i];
    if (item.Subject == eMailItem.Subject)
    {
      // found original message, reply to it
      Outlook._MailItem reply = item.Reply();
      reply.HTMLBody = eMailItem.HTMLBody;
      reply.Send();
      break;
    }
  }
}
catch
{
}