Создать / открыть существующее сообщение из пути к новому Outlook.MailItem в c # - PullRequest
2 голосов
/ 27 июля 2011

Здравствуйте, я хотел бы создать 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 ]

7 голосов
/ 27 июля 2011

Чтобы открыть элемент в outlook, попробуйте:

var email = (Outlook.MailItem)app.Session.OpenSharedItem(fl)

Оттуда вы можете получить доступ к свойствам Attachments и Body.

Также, как я упоминал в своем комментарии, если Regex.IsMatch предназначен для определения расширения файла, используйте Path.GetExtension () вместо

0 голосов
/ 29 октября 2014

Я использовал этот пакет NuGet: https://www.nuget.org/packages/MSGReader/

Кажется, работает нормально.Я предпочитаю это библиотеке MS OutlookApi, потому что она не требует установки Outlook.

Я ценю, что она не будет создавать экземпляры MailItem, как вы просили в своем вопросе, - но это позволитВы извлекаете сохранение отдельных вложений и тела ...

...