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.IsAsciiASCII渡された値がエンコードされているかどうかを判断しようとする内部メソッドです。

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 に答える