Используя MailMessage
класс в .NET 4, я обнаружил сегодня проблему, которую пока не могу решить.Пожалуйста, смотрите следующий код:
using (var message = new MailMessage())
{
message.From = new MailAddress(@"uwe.keim@gmail.com", "Uwe Keim");
message.Bcc.Add(new MailAddress(@"uk@zeta-software.de", "Uwe Keim"));
// This fails (see screenshot).
/*1*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Müller, Fred"));
// This succeeds.
/*2*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Fred Müller"));
// This also succeeds.
/*3*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Muller, Fred"));
message.Subject = "Test";
message.Body = "Some text body.";
new SmtpClient().Send(message);
}
Это простой фрагмент, поэтому отправьте SMTP-сообщение.Взаимная попытка строк /*1*/
, /*2*/
и /*3*/
, поведение отличается:
Всякий раз, когда имя получателя ("To") содержит умлаут на немецком языке (то есть "Ä", "Ö" или "Ü ") и запятая (то есть", "), получатель видит поврежденный текст в полученном им электронном сообщении :
Как вы можете видеть на скриншоте выше (взятом из Outlook 2010), в строке "To:" есть загадочный символ "=? Utf-8? Q? M = C3 = BCller".
Устранение неполадок с помощью запятой или удаления немецкого умлаута.Я пробовал и Exchange 2003, и hmailserver получить один и тот же результат.
Мой вопрос:
Кто-нибудь знает об этом поведении и имеет решение?
Обновление 1:
В соответствии с предложением пользователя Адам Марас , я запустил Microsoft Network Monitor при отправке сообщения электронной почты.
Мне кажется, класс MailMessage
(или класс SmtpClient
?) Уже делает это неправильно: