C#读取MSG文件为附件时

时间:2019-01-16 17:12:29

标签: c# mapi outlook-2016

我们有一个主系统,该系统生成一个电子邮件信息文件,该文件由中央电子邮件服务器提取,然后由该服务器构建并向我们的客户发送电子邮件。如果地址不正确,则会将NDR电子邮件连同原始电子邮件的.msg附件发送回中央电子邮件服务器。

我希望能够拉入附件并获取电子邮件的原始创建者(存储在原始电子邮件的Reply-To标头中)并将NDR转发给他们。在VB6中,我们能够使用CDO做到这一点,现在我正在使用Outlook 2016 Interop,并且在重新创建代码时遇到了麻烦。

我可以将附件保存到磁盘,然后再读回以获取标头,但我宁愿只读进去。我一直在尝试使用MSMAPI,但运气不佳。我一直在使用OutlookSpy查找标签,我们考虑使用“兑换”,但该公司不想花这笔钱。任何帮助,将不胜感激。 谢谢

代码:

using Outlook = Microsoft.Office.Interop.Outlook;

Outlook.Application OutlookApp = new Outlook.Application();
var session = OutlookApp.GetNamespace("MAPI");
foreach (object oMessage in oInbox.Items)
{
    if (oMessage is Outlook.ReportItem reportItem)
    {
      //this is where I need to get the original sender.
        reportItem.Attachments[1].SaveAsFile("c:\\temp\\NDFOrig.msg");
       var origMessage= session.OpenSharedItem("c:\\temp\\NDFOrig.msg") as Outlook.MailItem;
       string sender = origMessage.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0050001F")
       //After we have the sender, forward the NDR message.
    }
}

0 个答案:

没有答案