note 70912 modified in ref.mail by danbrown
| From: | danbrown@php.net | Date: | Sun, 17 May 2009 20:12:41 +0000 |
| Subject: | note 70912 modified in ref.mail by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-155354@lists.php.net to get a copy of this message | ||
If you use a regexp to validate an e-mail address, be sure that you actually use a correct regexp.
In particular, there are more valid punctuation characters than you may think. All of these
characters may appear to the left of the at-sign: ! # $ % & ' * + - / = ? ^ _ ` { | } ~
Don't believe me? Look at RFC 2822, which defines the current standard for e-mail addresses. ;)
There's no reason, other than laziness, to reject e-mail address that contain these characters
to the left of the at-sign. You might think that nobody uses these characters, but people who write
incorrect regexps are one reason why. Do your part to correct this situation. :)
Note in particular the plus sign. Many regexps reject addresses with the plus sign, but there are
e-mail addresses that have them. In particular, gmail has a special feature called "plus
addressing", so that if your username is "joeuser", you can use "joeuser+web at
gmail dot com" and "joeuser+business at gmail dot com" as separate addresses, and the
e-mail will be sorted depending on which address was used.
Even allowing all those punctuation characters isn't enough to fully satisfy RFC2822. For
example, you can use quoted strings to allow spaces in e-mail addresses, such as "joe
user" at somewhere dot com. But I wouldn't worry about such things too much, because
they're too obscure; just make sure you get all the punctuation characters in there.
By the way, also read RFC 3696 and its errata. These define rules for e-mail addresses in more plain
language.
--was--
If you use a regexp to validate an e-mail address, be sure that you actually use a correct regexp.
In particular, there are more valid punctuation characters than you may think. All of these
characters may appear to the left of the at-sign: ! # $ % & ' * + - / = ? ^ _ ` { | } ~
Don't believe me? Look at RFC 2822, which defines the current standard for e-mail addresses. ;)
There's no reason, other than laziness, to reject e-mail address that contain these characters
to the left of the at-sign. You might think that nobody uses these characters, but people who write
incorrect regexps are one reason why. Do your part to correct this situation. :)
Note in particular the plus sign. Many regexps reject addresses with the plus sign, but there are
e-mail addresses that have them. In particular, gmail has a special feature called "plus
addressing", so that if your username is "joeuser", you can use "joeuser+web at
gmail dot com" and "joeuser+business at gmail dot com" as separate addresses, and the
e-mail will be sorted depending on which address was used.
Even allowing all those punctuation characters isn't enough to fully satisfy RFC2822. For
example, you can use quoted strings to allow spaces in e-mail addresses, such as "joe
user" at somewhere dot com. But I wouldn't worry about such things too much, because
they're too obscure; just make sure you get all the punctuation characters in there.
http://php.net/manual/en/ref.mail.php