2

简单的问题,但我在 MSDN 上的任何地方都找不到答案...

寻找 ASP.NET 将使用的默认值:

MailMessage.BodyEncodingMailMessage.SubjectEncoding

如果您不在代码中设置它们?

谢谢

4

1 回答 1

8

对于MailMessage.BodyEncodingMSDN 说:

为属性指定的值 BodyEncoding设置 Content-Type 标头中的字符集字段。默认字符集是"us-ascii".

因为MailMessage.SubjectEncoding我也找不到任何记录在案的默认值,但反射器是为了拯救:

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因此,在大多数情况下,主题的默认编码似乎是。

于 2011-03-15T08:19:23.973 回答