Сообщение MIME из MailItem

Поэтому у меня было много исследований на эту тему. Был COM-подход, я потратил немало времени на его реализацию, он включал IMessage, IConverterSession, некоторые размышления и тому подобное. Большинство ответов, которые я нашел, предположили, что это не может быть использовано в C#, но мне кажется, что есть способ. В любом случае, закрытие, которое я когда-либо получал, состояло в том, чтобы получить пустой объект IStream (length = 0). Еще одна вещь, которая заставила меня полностью отказаться от этого метода, заключалась в том, что некоторые отчеты могли не работать в 64-битной версии Outlook 2010.

Более очевидным способом было просто получить MailItem из внешнего вида и начать создавать из него MIME-сообщение. Это кажется очень утомительным и подверженным ошибкам + это дополнительно раздувает мой код с разбором / построением функциональности MIME.

Я подумал, если есть другой способ, какой-то способ оставить существующие классы.NET, чтобы легко превратить мой элемент почты Outlook в сообщение MIME. Я думал, что классы MailMessage / SmtpClient могут помочь. Итак, я сделал это:

        SmtpClient client = new SmtpClient();
        client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;

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

Поэтому, прежде чем углубляться в размышления, чтобы посмотреть, смогу ли я получить содержимое без фактического сохранения файла, есть ли в.Net какой-либо другой встроенный способ создания сообщений MIME из отдельных полей (из, в, тему, тело, вложения) Я не настаиваю на методе, который сразу превратит MailItem в MIME Message (хотя это будет хорошо, если он есть), но, по крайней мере, я могу установить свойства для какого-либо объекта и извлечь из него построенное сообщение потом?

Большое спасибо!

1 ответ

Решение

Итак, вот как я решил это: во-первых, я использую класс MailMessage, заполняя его данными из почтового элемента, что-то вроде этого:

MailMessage msgMIME = new MailMessage();
msgMIME.Subject = mailItem.Subject; // mailItem is the Outlook Message.
// The rest of the logic here, setting from, to, bcc, cc, importance, body.

Затем я использую часть кода в этой статье в Project Code: Добавление функции Save() в Microsoft.Net.Mail.MailMessage.

За исключением того, что я заменил FileStream там на MemoryStream. Кажется, отлично работает.

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