Ошибочное отображение приемника электронной почты при использовании немецких умляутов и запятой в имени

Используя класс 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") содержит немецкий умляут (т.е. "Ä", "Ö" или "Ü") и запятую (т.е. ". получатель видит поврежденный текст в полученном им электронном сообщении:

enter image description here

Как видно из приведенного выше скриншота (взятого из Outlook 2010), в строке "To:" стоит загадочное "=?utf-8?Q?M=C3=BCller".

Отсутствие запятой или удаление немецкого умляута исправляет ситуацию. Я пробовал и Exchange 2003, и hmailserver, чтобы получить тот же результат.

Мой вопрос:

Кто-нибудь знает о таком поведении и имеет решение?

Обновление 1:

Как предложил пользователь Adam Maras, я запустил Microsoft Network Monitor во время отправки сообщения.

Мне кажется, что класс MailMessage (или класс SmtpClient?) уже делает это неправильно:

enter image description here

8
задан Community 23 May 2017 в 11:53
поделиться