Создать / открыть существующее сообщение из пути к новому Outlook.MailItem в C#
Здравствуйте, я хотел бы создать Outlook.MailItem (я полагаю) из существующего, расположенного на диске. У меня есть путь, хранящийся в строке, и я хотел бы получить доступ, чтобы сохранить тело и вложения из него.
Я не могу понять, как открыть его в C# и получить к нему доступ.
В настоящее время у меня есть что-то вроде
где fl вычисляется как "C:\users\msgs\email.msg"
Спасибо за время
Outlook.Application app = new Outlook.Application();
try
{
foreach (String fl in Directory.GetFiles(docInfo.LocalPath + _preprocessorDirectory))
{
if (Regex.IsMatch(fl.Trim(), _regex, RegexOptions.IgnoreCase))
{
Outlook.MailItem email = new Outlook.MailItem(fl);
SaveAttachments(email);
SaveBody(email);
}
}
}
catch (Exception ex)
{
logger.Error("Error in Process for document " + docInfo.OriginalPath, ex);
callback.Invoke(docInfo, false);
}
return false;
2 ответа
Чтобы открыть объект в Outlook, попробуйте:
var email = (Outlook.MailItem)app.Session.OpenSharedItem(fl)
Оттуда вы можете получить доступ к Attachments
собственность и Body
собственность также.
Кроме того, как я уже упоминал в своем комментарии, если Regex.IsMatch
чтобы определить расширение файла, используйте Path.GetExtension() вместо
Я использовал этот пакет NuGet: https://www.nuget.org/packages/MSGReader/
Кажется, работает нормально. Я предпочитаю это библиотеке MS OutlookApi, потому что она не требует установки Outlook.
Я ценю, что он не будет создавать экземпляры MailItem, как вы просили в своем вопросе, но он позволит вам извлечь, сохранить отдельные вложения и тело...