我正在使用System.Net.Mail.MailAddress和朋友發送電子郵件的應用程序。該解析器是否實現完整RFC5322或子集或什麼?關於這個話題,MSDN並不是非常歡迎。什麼是System.Net.Mail.MailAddress的解析器接受的格式?
任何提示讚賞。
我正在使用System.Net.Mail.MailAddress和朋友發送電子郵件的應用程序。該解析器是否實現完整RFC5322或子集或什麼?關於這個話題,MSDN並不是非常歡迎。什麼是System.Net.Mail.MailAddress的解析器接受的格式?
任何提示讚賞。
我已經寫了一個小片段來測試功能:
foreach (int i in Enumerable.Range(32,128-32))
{
char c = (char)i;
string addr = String.Format("par.t1{0}pa.r{0}[email protected]", c);
try
{
var mailAddr = new MailAddress(addr);
}
catch
{
Console.WriteLine("MailAddress failed '{0}' ({1}): {2}", c, i, addr);
}
}
隨着3.5 SP1以下結果:
MailAddress failed ' ' (32): par.t1 pa.r [email protected] MailAddress failed '"' (34): par.t1"pa.r"[email protected] MailAddress failed '(' (40): par.t1(pa.r([email protected] MailAddress failed ')' (41): par.t1)pa.r)[email protected] MailAddress failed ',' (44): par.t1,pa.r,[email protected] MailAddress failed ':' (58): par.t1:pa.r:[email protected] MailAddress failed ';' (59): par.t1;pa.r;[email protected] MailAddress failed '<' (60): par.t1<pa.r<[email protected] MailAddress failed '>' (62): par.t1>pa.r>[email protected] MailAddress failed '@' (64): [email protected]@[email protected] MailAddress failed '[' (91): par.t1[pa.r[[email protected] MailAddress failed '\' (92): par.t1\pa.r\[email protected] MailAddress failed ']' (93): par.t1]pa.r][email protected] MailAddress failed '⌂' (127): par.t1⌂pa.r⌂[email protected]
此外,它似乎並不支持「引用字符串「本地部分,如"blah"@example.com
。
我認爲驗證者在變得無法使用之前可以接受的更少。
在上Dominic Sayers isemail article話題,傑里奧布萊恩說,他讀了多米尼克的RFC符合性測試的情況下對System.Net.MailAddress
類:
System.Net.MailAddress
只有59% 符合RFC的規格。 後續評論注意到具體的 案件,其中它產生了假 積極和假陰性。
對於什麼構成有效的電子郵件地址,RFC非常薄弱。他們允許一系列不尋常和不受歡迎的格式。所以我想真正的問題是,在大多數現實世界中,System.Net.MailAddress
是否足夠好?
獲取並安裝RedGate的Reflector,然後導航到System.Net.Mail命名空間並查看代碼以查看它的功能。我會這樣做,但我現在在家裏在我的Mac上。 – tvanfosson 2009-02-09 13:30:26
也許我很奇怪,但我寧願看到一個文檔(最好由MS或ECMA)說明該死的事情「接受除了X,Y和Z節之外的RFCsuch-and-so地址,因爲IETF不知道關於互聯網「,而不是不得不拆開這個東西。 – 2009-02-09 13:53:11