ASP.NET MailMessage.BodyEncoding и MailMessage.SubjectEncoding по умолчанию

Простой вопрос, но я не могу найти ответ нигде в MSDN...

Поиск значений по умолчанию, которые ASP.NET будет использовать для:

MailMessage.BodyEncoding и MailMessage.SubjectEncoding

Если вы не установите их в коде?

Спасибо


person timothyclifford    schedule 15.03.2011    source источник


Ответы (1)


Для MailMessage.BodyEncoding MSDN говорит:

Значение, указанное для свойства 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.

person Alex    schedule 15.03.2011
comment
Ааа! Это должно быть задокументировано, я не мог понять, почему, если US-ASCII является кодировкой по умолчанию, она правильно отправляет акценты и другие специальные символы. Исходный код: referencesource.microsoft.com /#Система/сеть/Система/Сеть/почта/ - person Marc; 29.05.2020