我正在尝试使用下面的代码通过以下方式发送消息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(使用前将#替换为@)