-
-
http://www.ietf.org/rfc/rfc0822.txt?number=822 is the RFC822 document itself. It gives valid email addresses as a Backus-Naur grammar. Can't get much more specific than that. ADDRESS SPECIFICATION is on page 27.
To attempt to put it into some semblance of English: The part before the @ is <em>word</em>, which is (eventually) one or more of any character (ASCII 0-177) "except specials, SPACE and CTLs"; CTLS are ASCII 0- 37, 177, and 127; SPACE is ASCII 40 and 32; "specials" are ()<>@,;:"\.[] Apparently also valid is a "quoted-string", which means a string (made of ASCII 0-177) in double-quotes that doesn't include a ", a \, or a carriage-return, although you can use \ as an escape-character to escape a CHAR (ASCII 0-177). Now that's the part BEFORE the @. You can enjoy reading about the part after the @ yourself.
So far as code to check for valid addresses, see for example http://search.cpan.org/~pdwarren/Mai...0.3/Address.pm which is a Perl module. http://www.perldoc.com/perl5.8.0/pod/perlfaq9.html has one part "How do I check a valid mail address?" which says that the only real way to check for a valid address is just to try it and see if it bounces.
-
-
If it isn't in the list of forbidden characters, then it's valid. The Perl module agrees. Just because Hotmail or something says it isn't valid doesn't mean it really isn't valid according to the specification.
<pre style="font-size: 7pt;">chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test&test@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&test@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test&@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&&&&&@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&&[&&&@test.com|) ? print "Yes.\n" : print "No.\n"'
No.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test\&@test.com|) ? print "Yes.\n" : print "No.\n"'
No.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|"test"@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|"test&"@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|"test\&"@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.</pre>
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules