Asp.net C#具有特殊字符的电子邮件地址

时间:2009-01-27 11:51:14

标签: c# asp.net email encoding special-characters

我正在使用集成的System.Net.Mail发送电子邮件

我喜欢

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

当电子邮件发送到客户端时,“ä”字符丢失。似乎是一些编码问题。

有谁知道如何解决它?

2 个答案:

答案 0 :(得分:4)

尝试添加这些:

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

它也可能是邮件服务器问题。尝试将其发送到各种电子邮件地址; POP3,WebMail等

这里有更多信息,虽然你可能已经看过这里了:

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

答案 1 :(得分:2)

我只花了5个小时调试类似的问题,我找到的解决方案也可能是这个问题的解决方案。由于没有人发布任何其他解决方案,我将提供我的发现。

.NET2.0 Mail API中似乎存在一个微妙的错误,导致邮件头中的收件人名称编码失败。如果在发送邮件之前访问MailMessage实例的To属性(可能还有其他),则会发生这种情况。

以下示例将导致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);

然而,将WriteLine移动到发送行下方会导致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]);

我认为这个bug也会出现在Cc和Bcc属性上,所以要小心这一点。 希望有人觉得这很有用。