Отправка MailMessage с помощью System.Net.Mail.SmtpClient: почему тело письма прикрепляется в виде текстового файла?

Я отправляю почту с помощью 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".

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

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

Обновить

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


person Slauma    schedule 10.03.2010    source источник
comment
Я использовал это много раз и не имел такого поведения. - Какой почтовый клиент вы используете? - Какой почтовый сервер вы используете?   -  person BlackICE    schedule 10.03.2010
comment
Я тоже собирался спросить о почтовом клиенте... вы подтвердили это с несколькими почтовыми клиентами?   -  person Albert    schedule 10.03.2010
comment
Клиент: MS Outlook 2000, сервер: нет, идет напрямую к нашему внешнему интернет-провайдеру/почтовому провайдеру. Странно то, что я использовал его в другом проекте несколько месяцев назад таким же образом, и у меня не было этой проблемы. Единственная разница, которую я вижу на данный момент, заключается в том, что старый проект был типа ASP WebSite, а этот — типа ASP WebApplication. Но я не могу поверить, что это играет роль.   -  person Slauma    schedule 10.03.2010
comment
Забудьте вопрос: проверил в другом почтовом клиенте - проблем не было. Потом перезапустил Outlook -› проблема исчезла. Странный! Но спасибо, что указали мне правильное направление (проблема с клиентом)! Извините за беспокойство. Я проголосую за удаление этого вопроса (если смогу с моей низкой репутацией).   -  person Slauma    schedule 10.03.2010


Ответы (1)


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

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

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

person Timores    schedule 10.03.2010
comment
Спасибо за разъяснения, Тиморес! Но проблема исчезла волшебным образом после перезапуска Outlook (см. мой комментарий к вопросу). Этого действительно не произошло в моем старом проекте, я только что посмотрел в своей папке «Входящие» старые тестовые письма, и все они не имели вложений. Похоже, это временная проблема с Outlook. - person Slauma; 10.03.2010