4

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

我真的很喜欢

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

当电子邮件到达客户时,“ä”字符丢失。似乎有些编码问题。

有人知道如何解决吗?

4

2 回答 2

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

于 2009-01-27T15:29:03.270 回答
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]);

我假设这个错误也会发生在 Cc 和 Bcc 属性上,所以要小心这一点。希望任何人都觉得这很有用。

于 2009-03-13T16:28:28.340 回答