Dot-Net

System.Net.Mail.MailAddress 的解析器接受的格式是什麼?

  • February 12, 2010

我正在開發一個使用System.Net.Mail.MailAddress和朋友發送電子郵件的應用程序。該解析器是否實現了完整的RFC5322或子集或什麼?MSDN 在這個話題上不是很熱情。

任何提示表示讚賞。

我寫了一個小片段來測試這個功能:

foreach (int i in Enumerable.Range(32,128-32))
{
   char c = (char)i;
   string addr = String.Format("par.t1{0}pa.r{0}t2@example.com", c);
   try
   {
       var mailAddr = new MailAddress(addr);
   }
   catch
   {
       Console.WriteLine("MailAddress failed '{0}' ({1}): {2}", c, i, addr);
   }
}

在 3.5 SP1 上得到以下結果:

郵件地址失敗 ' ' (32): par.t1 par.r t2@example.com
郵件地址失敗 '"' (34): par.t1"pa.r"t2@example.com
郵件地址失敗 '(' (40): par.t1(pa.r(t2@example.com
郵件地址失敗 ')' (41): par.t1)pa.r)t2@example.com
郵件地址失敗','(44):par.t1,pa.r,t2@example.com
郵件地址失敗':'(58):par.t1:pa.r:t2@example.com
郵件地址失敗';' (59): 部分.t1;pa.r;t2@example.com
郵件地址失敗 '<' (60):par.t1<pa.r<t2@example.com
郵件地址失敗'>'(62):par.t1>pa.r>t2@example.com
郵件地址失敗'@'(64):par.t1@pa.r@t2@example.com
郵件地址失敗 '[' (91): par.t1[pa.r[t2@example.com
郵件地址失敗 '\' (92): par.t1\pa.r\t2@example.com
郵件地址失敗']'(93):par.t1]pa.r]t2@example.com
郵件地址失敗“⌂”(127):par.t1⌂pa.r⌂t2@example.com

此外,它似乎不支持“引用字元串”本地部分,例如"blah"@example.com.

我認為驗證者在變得無法使用之前不能接受任何更少。

引用自:https://stackoverflow.com/questions/528090