这个问题很简单,但我在MSDN上找不到答案……
查找ASP.NET将用于以下各项的默认值:
MailMessage.BodyEncoding和MailMessage.SubjectEncoding
如果你不在代码中设置它们呢?
谢谢
发布于 2011-03-15 16:19:24
对于MailMessage.BodyEncoding,MSDN说:
为
BodyEncoding属性指定的值设置Content-Type头中的字符集字段。默认字符集为"us-ascii"。
对于MailMessage.SubjectEncoding,我也找不到任何记录在案的默认值,但reflector是为了抢救:
internal void set_Subject(string value)
{
if ((value != null) && MailBnfHelper.HasCROrLF(value))
{
throw new ArgumentException(SR.GetString("MailSubjectInvalidFormat"));
}
this.subject = value;
if (((this.subject != null) && (this.subjectEncoding == null)) &&
!MimeBasePart.IsAscii(this.subject, false))
{
this.subjectEncoding = Encoding.GetEncoding("utf-8");
}
}MimeBasePart.IsAscii是一个内部方法,它尝试确定传递的值是否为ASCII编码:
internal static bool IsAscii(string value, bool permitCROrLF)
{
if (value == null)
{
throw new ArgumentNullException("value");
}
foreach (char ch in value)
{
if (ch > '\x007f')
{
return false;
}
if (!permitCROrLF && ((ch == '\r') || (ch == '\n')))
{
return false;
}
}
return true;
}因此,在大多数情况下,subject的默认编码似乎都是UTF-8。
https://stackoverflow.com/questions/5307923
复制相似问题