Можно ли читать файлы.eml в.net?
Я хотел бы знать, можно ли анализировать файлы.eml и.msg в точечной сети (предпочтительно из потока памяти), чтобы я мог использовать их на странице ASP.Net.
3 ответа
Да, ты можешь. Это просто обычные текстовые файлы, ничего особенного.
Вот как выглядит файл eml изнутри
X-Sender: somewhere@google.com
X-Receiver: somewhere@google.com
MIME-Version: 1.0
From: somewhere@google.com
To: somewhere@google.com
Date: 7 Jun 2009 18:58:01 -0400
Subject: From someone you know
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
This is the body
EML (сообщения MIME)
EML - это в большинстве случаев MIME-файлы с почтовыми сообщениями. Общие источники файлов EML включают сообщения, сохраненные из Outlook Express или Thunderbird, сообщения, загруженные с серверов IMAP или POP3.
Правильно загрузить файл EML не так просто, как кажется. Вы можете написать реализацию, работающую в 95% случаев в течение нескольких дней. Оставшиеся 5% займут как минимум несколько месяцев;-). Я знаю, потому что я участвовал в разработке одного.
Рассмотрим следующие трудности:
- электронные письма в юникоде
- языки справа налево
- исправление искаженных файлов EML, вызванных известными ошибками в популярных почтовых клиентах и серверах
- работа с S/MIME (зашифрованные и подписанные почтовые сообщения)
- правильно работает с несколькими методами кодирования вложений
- работа с встроенными изображениями и таблицами стилей, встроенными в электронные письма HTML
- убедившись, что он правильно анализирует сообщение о пытках MIME от Майка Криспина (соавтор RFC Mime и IMAP)
- убедившись, что искаженное сообщение не приведет к переполнению буфера или другому отказу приложения
- обработка иерархических сообщений (сообщение с прикрепленными сообщениями)
- убедившись, что он правильно обрабатывает очень большие письма
Созревание такого парсера занимает годы и постоянную обратную связь для его пользователей. В данный момент в.NET Framework нет такого парсера. Пока он не изменится, я бы предложил получить сторонний MIME-парсер от известного поставщика.
Следующий код использует наш компонент Rebex Secure Mail, но я уверен, что аналогичная задача может быть легко воспроизведена с компонентами других поставщиков.
Код основан на учебнике по почтовому сообщению.
// create an instance of MailMessage
MailMessage message = new MailMessage();
// load the message from a local disk file
message.Load("c:\\message.eml");
// load the message from MemoryStream
MemoryStream stream = new MemoryStream();
// TODO: fill the stream, seek to the beginning
message.Load(stream);
MSG (сообщения Outlook)
Формат MSG - это формат сообщений электронной почты, представленный Microsoft в Microsoft Outlook. На сайте Microsoft есть спецификация формата MSG. Вы также можете попробовать сторонний компонент. Мне известен один компонент формата MSG от IndependentSoft, но я не пробовал его лично. Также наша Rebex Secure Mail версии 1.0.4060.0 или новее также поддерживает формат MSG.
ИСПОЛЬЗУЙТЕ CDOSYS.DLL для файлов EML
Вы можете сделать это "правильно" (конечно, лучше, чем пытаться разобрать его как текстовый файл), используя COM cdosys.dll ("Microsoft CDO для Windows 2000 Library").
Вам нужно создать для него оболочку.Net, добавив ссылку: поскольку она зависит от ADODB.dll, вы получите Interop.CDO.dll и Interop.ADODB.dll, созданные для вас в каталоге bin.
Существует много информации об отправке электронных писем с использованием CDO, но почти ничего об использовании ее для чтения файлов EML, но я нашел эту страницу, которая заставила меня начать http://support.microsoft.com/kb/310224