he escrito un pequeño fragmento para probar la función:
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);
}
}
con los siguientes resultados en 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]
Además, no parecen apoyar "cita de cadena "piezas locales, como "blah"@example.com
.
No creo que un validador pueda aceptar menos antes de quedar inutilizable.
Obtenga e instale Reflector de RedGate, luego navegue hasta el espacio de nombres System.Net.Mail y mire el código para ver qué hace. Haría esto pero estoy en casa en mi Mac ahora mismo. – tvanfosson
Tal vez soy extraño, pero prefiero ver un documento (preferiblemente por MS o ECMA) que indique que la maldita cosa "acepta direcciones RFCsuch-such, excepto las secciones X, Y y Z porque el IETF no sabe sh * t sobre internet "que tener que desmontar la cosa. –
De acuerdo, pero ausente esa documentación, y tal vez incluso con ella, mirando el código respondería la pregunta definitivamente. – tvanfosson