ASP.NET MailMessage.BodyEncoding和MailMessage.SubjectEncoding违约 [英] ASP.NET MailMessage.BodyEncoding and MailMessage.SubjectEncoding defaults
问题描述
简单的问题,但我找不到任何地方MSDN的答案......
Simple question but I can't find the answer anywhere on MSDN...
寻找默认ASP.NET将用于:
Looking for the defaults ASP.NET will use for:
MailMessage.BodyEncoding
和 MailMessage.SubjectEncoding
如果您没有设置它们code?
If you don't set them in code?
感谢
推荐答案
有关<一个href=\"http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.bodyencoding.aspx\"><$c$c>MailMessage.BodyEncoding$c$c> MSDN说:
For MailMessage.BodyEncoding
MSDN says:
为指定的值
BodyEncoding
属性设置
字符设定的领域
Content-Type头。默认
字符集是US-ASCII
。
有关 MailMessage.SubjectEncoding
我也无法找到任何记录的默认值,但反射器是救援:
For MailMessage.SubjectEncoding
I was also unable to find any documented default value, but reflector is to rescue:
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
编码的内部方法:
MimeBasePart.IsAscii
is an internal method which tries to determine whether the passed value is in ASCII
encoding:
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
在大多数情况下。
这篇关于ASP.NET MailMessage.BodyEncoding和MailMessage.SubjectEncoding违约的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!