Сообщение MIME из MailItem - PullRequest
       56

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

1 голос
/ 18 ноября 2011

Так что у меня было много исследований на эту тему.Был 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 Ответ

0 голосов
/ 19 ноября 2011

Хорошо, вот как я это решил: Прежде всего я использую класс 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.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...