C# ASP.NET MailMessage.BodyEncoding和MailMessage.SubjectEncoding默认值

C# ASP.NET MailMessage.BodyEncoding和MailMessage.SubjectEncoding默认值,c#,asp.net,mailmessage,C#,Asp.net,Mailmessage,这个问题很简单,但我在MSDN上找不到答案 查找ASP.NET将用于的默认值: MailMessage.BodyEncoding和MailMessage.SubjectEncoding 如果不在代码中设置它们 感谢MSDN说: 为指定的值 BodyEncoding属性设置 中的字符集字段 内容类型标题。默认值 字符集是“us ascii” 对于MailMessage.SubjectEncoding,我也无法找到任何记录在案的默认值,但reflector将拯救: internal void set

这个问题很简单,但我在MSDN上找不到答案

查找ASP.NET将用于的默认值:

MailMessage.BodyEncoding
MailMessage.SubjectEncoding

如果不在代码中设置它们

感谢MSDN说:

为指定的值
BodyEncoding
属性设置 中的字符集字段 内容类型标题。默认值 字符集是“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;
}

因此,在大多数情况下,主题的默认编码似乎是
UTF-8

aghh!它必须被记录下来,我不明白为什么如果US-ASCII是默认编码,它会正确地发送重音和其他特殊字符。源代码: