Создать / открыть существующее сообщение из пути к новому 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, как вы просили в своем вопросе, но он позволит вам извлечь, сохранить отдельные вложения и тело...

Другие вопросы по тегам