C # Чтение MSG-файла, когда это вложение - PullRequest
0 голосов
/ 16 января 2019

У нас есть наша основная система, которая генерирует информационный файл электронной почты, который принимается центральным почтовым сервером, который он собирает и отправляет по электронной почте нашим клиентам.Если адрес указан неверно, электронная почта с отчетом о недоставке отправляется обратно на центральный почтовый сервер с вложением MSG исходного письма.

Я хочу иметь возможность вставить это вложение и получить первоначального создателяэлектронная почта (которая хранится в заголовке Reply-To оригинальной электронной почты) и пересылает им отчет о недоставке.В VB6 мы смогли сделать это с помощью CDO, теперь я использую Interop Outlook 2016, и у меня возникают проблемы при воссоздании кода.

Я могу сохранить вложение на диск и затем прочитать его обратно, чтобы получить заголовок, но я бы предпочел просто прочитать его. Я пытался использовать MSMAPI без особой удачи.Я использовал OutlookSpy для поиска тегов, и мы рассмотрели возможность использования Redemption, но компания не хочет тратить деньги.Любая помощь будет оценена.Спасибо

Код:

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.
    }
}
...