У нас есть наша основная система, которая генерирует информационный файл электронной почты, который принимается центральным почтовым сервером, который он собирает и отправляет по электронной почте нашим клиентам.Если адрес указан неверно, электронная почта с отчетом о недоставке отправляется обратно на центральный почтовый сервер с вложением 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.
}
}