Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Сохранение .eml в нужном формате  [new]
Kaimen
Member

Откуда:
Сообщений: 106
Добрый день.
Мне нужно сохранить письмо в файл .eml.
Письмо получаю через ae.net.mail.mailmessage.
Далее использую следующий код:

var msgStr = new StringWriter();
                            m.Save(msgStr);
                            var inputBytes = Encoding.GetEncoding(m.Charset).GetBytes(msgStr.ToString());

Письмо сохраняется в .eml как обычный текст, а мне нужно, чтобы сохранялся как html.
Может быть кто-то сталкивался с аналогичной проблемой?
22 апр 19, 12:01    [21868712]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
carrotik
Member

Откуда:
Сообщений: 1408
Kaimen,

..вы через POP3-протокол загружаете сообщение библиотекой AE.Net.Mail ...? .. по-моему, там есть IMAP-реализация, там можно загрузить тело письма либо в текстовом, либо в HTML-формате ...
22 апр 19, 12:18    [21868742]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
Kaimen
Member

Откуда:
Сообщений: 106
carrotik,

я как раз-таки работаю через imap, в этом и проблема.
22 апр 19, 13:09    [21868805]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
Kaimen
Member

Откуда:
Сообщений: 106
carrotik,

Подключаюсь:
ImapClient ic = new ImapClient();


Через поп3, насколько я знаю, нельзя получать письма из любой папки, он смотрит только на Входящие.
http//www.qaru.site/questions/6465657/imap-using-c-aenetmail
22 апр 19, 13:33    [21868844]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
carrotik
Member

Откуда:
Сообщений: 1408
Kaimen,

.. я с этой библиотекой не работал, я использовал MailKit, там все немного иначе .. Но и в этой библиотеке, как я понял, если подобный метод

public Attachment GetHtmlView() {
			return OfType("text/html").FirstOrDefault() ?? OfType(ct => ct.Contains("html")).FirstOrDefault();
		}


.. т.е. где-то там надо покопаться (ну, или документацию внимательно почитать) ....
22 апр 19, 13:39    [21868853]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
iskatelsql
Member

Откуда:
Сообщений: 783
Kaimen,

а если в два этапа? вроде как решения есть google.ru/search?q=eml+2+html
25 апр 19, 01:39    [21871057]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
Kaimen
Member

Откуда:
Сообщений: 106
iskatelsql
Kaimen,

а если в два этапа? вроде как решения есть google.ru/search?q=eml+2+html


Не совсем понял про этапы. По ссылке - какие-то конвертеры, не вижу, как они могли бы быть полезны.
29 апр 19, 15:24    [21874482]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
carrotik
Member

Откуда:
Сообщений: 1408
Kaimen,

.. большинство почтовых сообщений объявляют тип тела письма как multipart/alternative, т.е. там есть чисто текстовая часть, объявляемая как ContentType: text/plain, и HTML-ная, объявляемая как ContentType: text/html .. вот вам и нужно натравить вашу библиотеку на ту часть, которая text/html .. как это делается в вашей библиотеке - смотрите сами ...
в библиотеке MailKit (это только для примера) это делается, например, так:

var body = (MimePart)myfolder.GetBodyPart(summary.UniqueId, summary.HtmlBody);
....
var body = (MimePart)myfolder.GetBodyPart(summary.UniqueId, summary.TextBody);
6 май 19, 13:16    [21878785]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение .eml в нужном формате  [new]
Kaimen
Member

Откуда:
Сообщений: 106
carrotik,

Примерно в ту же сторону и копал.
В итоге сработало так:

writer.ToString().Replace("multipart/mixed", "multipart/related").Replace("quoted-printable", "binary");


Спасибо за участие.
15 май 19, 16:56    [21885568]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить