System.Net.Mail 和 =?utf-8?B?XXXXX.... 标头

2024-03-26

我正在尝试使用下面的代码通过以下方式发送消息System.Net.Mail and am 有时获得像这样的主题'=?utf-8?B?W3AxM25dIEZpbGV...'(修剪)。这就是所谓的代码:

MailMessage message = new MailMessage()
{
    From = new MailAddress("[email protected] /cdn-cgi/l/email-protection", "Service"),
    BodyEncoding = Encoding.UTF8,
    Body = body,
    IsBodyHtml = true,
    ReplyTo = new MailAddress("[email protected] /cdn-cgi/l/email-protection"),
    SubjectEncoding = Encoding.UTF8
};

foreach (string emailAddress in addresses)
{
    message.To.Add(new MailAddress(emailAddress.Trim(), "Person"));
}

message.Subject = subject;

我想强调的是,这种情况并不总是发生。

我究竟做错了什么?


当您的主题包含 ASCII 范围之外的字符时,邮件软件必须对它们进行编码(RFC2822 邮件不允许标头中包含非 ASCII 字符)。有两种方法可以做到这一点:

  • 引用可打印(主题开头为"=?utf-8?Q")
  • Base64(主题开头为"=?utf-8?B")

该框架似乎认为 Base64 编码比引用打印编码更有效(=更短)。当您的主题包含相对较多 ASCII 范围之外的字符时,这是有意义的。

回答你的问题:你没有做错任何事。这就是带有非 ASCII 字符的互联网邮件的样子。当然,读取此类邮件的软件应该检测并解码此类主题字段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.Net.Mail 和 =?utf-8?B?XXXXX.... 标头 的相关文章

随机推荐