【问题标题】:Asp.net C# EMail Address with Special Character带有特殊字符的 Asp.net C# 电子邮件地址
【发布时间】:2010-10-03 17:51:34
【问题描述】:

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

我喜欢

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

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

有人知道怎么解决吗?

【问题讨论】:

  • 你试过Unicode编码(即UTF-16)吗?
  • 好吧,我很努力。但你认为它需要吗?虽然 utf-8 似乎对所有字符都足够了
  • 您的(未命名的)客户端也理解 UTF-8 吗?
  • 嗯,UTF-8 似乎是电子邮件的标准,但仍然值得一试。也许 UTF-8 是正确的编码,您只需要指定不同的参数(构造一个新的 UTF8Encoding 并使用它)。
  • 它的outlook版本不知道。它的客户个人电脑。 utf-8 也 unicode 不行。

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


【解决方案1】:

也尝试添加这些:

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

【讨论】:

    【解决方案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 属性上,所以请注意这一点。 希望任何人都觉得这很有用。

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2017-06-15
      相关资源
      最近更新 更多