|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2013-06-06 20:33 UTC] fillmorejd at gmail dot com
Description:
------------
Email with multiple period in a row fail validation when they are working email.
With gmail you can add periods into any email address and it will still deliver.
I use this to filter out messages. example@gmail.com is the same as
exam.....ple@gmail.com or exam.ple@gmail.com or exam.p.l.e@gmail.com.
With one period or if there is a letter or number between period the
FILTER_VALIDATE_EMAIL works just fine but if more than one period it fails.
Test script:
---------------
<?php
$email_a = 'exmple@gmail.com';
$email_b = 'exm.a.p.le@gmail.com';
$email_c = 'exa......mple@gmail.com';
if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
echo "This ($email_a) email address is considered valid.\n";
} else {
echo "$email_a failed\n";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
echo "This ($email_b) email address is considered valid.\n";
} else {
echo "$email_b failed\n";
}
if (filter_var($email_c, FILTER_VALIDATE_EMAIL)) {
echo "This ($email_c) email address is considered valid.\n";
} else {
echo "$email_c failed\n";
}
Expected result:
----------------
This (exmple@gmail.com) email address is considered valid.
This (exm.a.p.le@gmail.com) email address is considered valid.
This (exa......mple@gmail.com) email address is considered valid.
Actual result:
--------------
This (exmple@gmail.com) email address is considered valid.
This (exm.a.p.le@gmail.com) email address is considered valid.
exa......mple@gmail.com failed
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Nov 03 03:00:01 2025 UTC |
Multiple consecutive periods in normal email addresses really is invalid. The fact that Gmail supports it does not make it valid. Both RFC 5321 (SMTP) and 5322 (Internet Message Format) paraphrased say: addr-spec = dot-atom "@" domain dot-atom = atext+ ("." atext+)* atext = letters | digits | some symbols not including "."local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] RFC 5322 section 3.4.1 domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) RFC 5322 section 3.4.1 Domain = sub-domain *("." sub-domain) RFC 5321 section 4.1.2 from http://isemail.info/exa......mple%40gmail.com believe this can be closed