Отправка почтового сообщения с помощью System.Net.Mail.SmtpClient: почему тело письма прикреплено в виде текстового файла? - PullRequest
1 голос
/ 10 марта 2010

Я отправляю письмо с System.Net.Mail.SmtpClient:

MailMessage aMailMessage = new MailMessage();
aMailMessage.To.Add(aUser.Email);
aMailMessage.Subject = "aaa";
aMailMessage.Body = "bbb";

SmtpClient aSmtpClient = new SmtpClient();
aSmtpClient.Send(aMailMessage);

Письмо получено в виде текстового сообщения (тема «aaa» и тело «bbb», как и ожидалось), но к этому письму дополнительно прикрепляется текстовый файл: имя файла «aaa» и содержимое «bbb».

Почему этот текстовый файл прикреплен и как его избежать?

Спасибо за помощь!

Обновление

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

1 Ответ

2 голосов
/ 10 марта 2010

Способ вставки вложения в сообщение SMTP такой же, как и при наличии альтернативных версий сообщения.Заголовок сообщения основной части имеет тип MIME, означающий «многочастная часть», и определяется разделитель.Затем включается несколько вложенных сообщений, разделенных этим разделителем.Каждое суб-сообщение помечается частью MIME, определяющей формат тела или вложения.Например, файл Word помечен как что-то вроде «application / ms-word», а часть с обычным текстом помечена как текст / обычный или HTML как text / html.

В реализации SmtpClient (Iпосмотрел на это благодаря Reflector), если нет вложений и нет альтернативной версии, автоматически создается HTML-сообщение.Таким образом, старый клиент, такой как Outlook 2000, считает, что есть вложение, потому что, я думаю, он не поддерживает это понятие альтернативных представлений (и, следовательно, для него MIME-тип text / html является вложением).

Что такоестранно, что этого раньше не было (или ты не заметил).Возможно, предыдущие сообщения имели вложение или альтернативное представление, которое вы явно указали.

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