Создать/открыть существующее сообщение из пути к новому Outlook.MailItem в С#

Привет, я хотел бы создать Outlook.MailItem (я полагаю) из существующего, расположенного на диске. У меня есть путь, хранящийся в строке, и я хотел бы получить доступ к сохранению тела и вложений из него.

Я не могу понять, как открыть его в С# и получить к нему доступ.

в настоящее время у меня есть что-то вроде строк

где 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;

person extraordin    schedule 27.07.2011    source источник
comment
Почему вы используете Regex? Это выяснить, является ли это файлом msg? Вы можете использовать класс Path. Попробуйте if(Path.GetExtension(fl) == ".msg")   -  person Christopher Currens    schedule 27.07.2011


Ответы (2)


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

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

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

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

person Christopher Currens    schedule 27.07.2011
comment
Именно то, что я искал, но не знал, как туда добраться. Новое в С# из Java, спасибо. использование app.session... было не тем, о чем я думал, и собирался изучить, что он на самом деле делает. Спасибо. Использование регулярных выражений для обеспечения гибкости системы, поскольку используются разные проверки для разных файлов. т.е. pics, docs, pdfs... просто сохраняйте в app.config для изменения в одном месте. Спасибо. - person extraordin; 27.07.2011

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

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

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

person Simon Green    schedule 29.10.2014