Я только что потратил 5 часов на отладку подобной проблемы, и решение, которое я нашел, может быть решением этой проблемы. Поскольку никто не опубликовал никаких других решений, я поделюсь своими выводами.
Кажется, есть небольшая ошибка в почтовом API .NET2.0, которая приводит к сбою кодирования имен получателей в заголовках почты. Это происходит, если свойство To (и, возможно, другие) экземпляра MailMessage доступно до отправки сообщения.
В следующем примере заголовок To будет отправляться без кодировки, в результате чего по крайней мере мой почтовый клиент отобразит имя как «?????? ...»:
MailMessage message = new MailMessage();
message.To.Add(new MailAddress("address@example.com", "ÆØÅ Unicode Name"));
message.Subject = "Subject";
message.Body = "Body";
Console.WriteLine(message.To[0]);
smtpClient.Send(message);
Однако перемещение строки записи ниже строки отправки приводит к правильному кодированию заголовка To:
MailMessage message = new MailMessage();
message.To.Add(new MailAddress("address@example.com", "ÆØÅ Unicode Name"));
message.Subject = "Subject";
message.Body = "Body";
smtpClient.Send(message);
Console.WriteLine(message.To[0]);
Я предполагаю, что эта ошибка также будет возникать в свойствах Cc и Bcc, поэтому остерегайтесь этого.
Надеюсь, кто-нибудь найдет это полезным.