in reply to Re: Practical e-mail address validation
in thread Practical e-mail address validation
I've seen domains where foo.com was used in e-mail addresses for employees while foo.net was used in e-mail addresses of customers.
As for the "+mailbox" convention, there are arguments on both sides of whether to ignore such in determining equivalence of addresses (a customer might legitimately want separate accounts for members of a single group where the correspondence for all accounts just go to separate mailboxes at the same address, or it might just be a source of confusion or simplify some mild cases of abuse).
But we'll be using +mailbox to simplify testing so we'll just use lc $addr1 eq lc $addr2 as I already noted.
Thanks for the module recommendations. Email::Address notes:
XXX: This ($phrase) used to just be: my $phrase = qr/$word+/; It was changed to resolve bug 22991, creating a significant slowdown. Given current speed problems. Once 16320 is resolved, this section should be dealt with. -- rjbs, 2006-11-11
XXX: ...and the above solution caused endless problems (never returned) when examining this address, now in a test:So we disallow the hateful CFWS in this context for now. Of modern mail agents, only Apple Web Mail 2.0 is known to produce obs-phrase. -- rjbs, 2006-11-19admin+=E6=96=B0=E5=8A=A0=E5=9D=A1_Weblog-- ATAT --test.socialtext.com
which confirms some of my suspicions/assumptions.
Looking at the regexes that the module uses, they appear to have been constructed directly from the RFCs very similarly to how I constructed mine, except fewer features were intentionally dropped.
The note that "Of modern mail agents, only ... is known to produce" leads me to want to use that module if I were trying to parse e-mail addresses received in e-mail messages. An e-mail system would be broken if it required "the hateful CFWS" in order to deliver messages to it. So completely disallowing CFWS (as I did) doesn't prevent any addresses from being used.
The module doesn't appear to provide a way to get the address with quoting and escaping removed so that addresses can be compared. It also doesn't disallow the very common user mistake of "everybody@gmail" (which can be valid as an e-mail address in some situations but isn't a valid address to give to somebody outside of your organization and so is worthwhile for us to disallow).
So it appears that my similar regex has several advantages that I couldn't get from Email::Address as written.
- tye
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Practical e-mail address validation (Email::Address)
by everybody (Scribe) on Sep 13, 2008 at 20:16 UTC | |
by tye (Sage) on Sep 13, 2008 at 22:11 UTC |