What is the format accepted by System.Net.Mail.MailAddress' parser?

I'm working on an app that's using System.Net.Mail.MailAddress and friends for sending emails. Does that parser implement the full RFC5322 or a subset or what? The MSDN is not very forthcoming on this topic.

Any hints appreciated.

Answers


I've wrote a little snippet to test the function:

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);
    }
}

With the following results on 3.5 SP1:

MailAddress failed ' ' (32): par.t1 pa.r t2@example.com
MailAddress failed '"' (34): par.t1"pa.r"t2@example.com
MailAddress failed '(' (40): par.t1(pa.r(t2@example.com
MailAddress failed ')' (41): par.t1)pa.r)t2@example.com
MailAddress failed ',' (44): par.t1,pa.r,t2@example.com
MailAddress failed ':' (58): par.t1:pa.r:t2@example.com
MailAddress failed ';' (59): par.t1;pa.r;t2@example.com
MailAddress failed '<' (60): par.t1<pa.r<t2@example.com
MailAddress failed '>' (62): par.t1>pa.r>t2@example.com
MailAddress failed '@' (64): par.t1@pa.r@t2@example.com
MailAddress failed '[' (91): par.t1[pa.r[t2@example.com
MailAddress failed '\' (92): par.t1\pa.r\t2@example.com
MailAddress failed ']' (93): par.t1]pa.r]t2@example.com
MailAddress failed '⌂' (127): par.t1⌂pa.r⌂t2@example.com

Also it doesn't seem to support "quoted-string" local-parts, like "blah"@example.com.

I don't think a validator could accept any less before becoming unusable.


In the discussion thread on Dominic Sayers isemail article, Jerry O'Brien said that he read Dominic's RFC compliance test cases against the System.Net.MailAddress class:

System.Net.MailAddress is only 59% compliant with the RFC specifications. Follow-up comments noted the specific cases where it generated false positives and false negatives.

The RFCs are extremely weak on what constitutes a valid email email address. They allow a range of unusual and unpopular formats. So I guess the real question is, is System.Net.MailAddress good enough in a majority of real-world situations?


Need Your Help

Superfish problem in IE6

javascript jquery html css superfish

I'm having issues with my Superfish third level menu items, it works fine in everything other than IE6!

Drupal- How to get views field values using PHP Code?

php drupal module views

I have created a node in drupal with cck fields on it and I created a views to display the contents. Now what I wanted is on a specific area of my page I wanted to get the views result and display ...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.