我正在使用集成的 System.Net.Mail 发送电子邮件
我真的很喜欢
MailAddress abs = new System.Net.Mail.MailAddress("my@email.com", "Web Präsenz", System.Text.Encoding.UTF8);
当电子邮件到达客户时,“ä”字符丢失。似乎有些编码问题。
有人知道如何解决吗?
我正在使用集成的 System.Net.Mail 发送电子邮件
我真的很喜欢
MailAddress abs = new System.Net.Mail.MailAddress("my@email.com", "Web Präsenz", System.Text.Encoding.UTF8);
当电子邮件到达客户时,“ä”字符丢失。似乎有些编码问题。
有人知道如何解决吗?
尝试添加这些:
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
我刚刚花了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]);
我假设这个错误也会发生在 Cc 和 Bcc 属性上,所以要小心这一点。希望任何人都觉得这很有用。