Asp.net C # адрес электронной почты со специальным символом - PullRequest
4 голосов
/ 27 января 2009

Я отправляю электронные письма с интегрированной System.Net.Mail

мне нравится

MailAddress abs = new System.Net.Mail.MailAddress("my@email.com", "Web Präsenz", System.Text.Encoding.UTF8);

когда электронное письмо приходит к клиенту, символ "ä" отсутствует. Похоже, некоторые проблемы с кодированием.

кто-нибудь знает, как это исправить?

Ответы [ 2 ]

4 голосов
/ 27 января 2009

попробуйте добавить их тоже:

message.BodyEncoding =  System.Text.Encoding.UTF8;
message.SubjectEncoding = System.Text.Encoding.UTF8;

Это также может быть проблема почтового сервера. Попробуйте отправить его на другой адрес электронной почты; POP3, веб-почта и т. Д.

Здесь есть еще немного информации, хотя вы, наверное, уже смотрели здесь:

http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

2 голосов
/ 13 марта 2009

Я только что потратил 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, поэтому остерегайтесь этого. Надеюсь, кто-нибудь найдет это полезным.

...