Действителен ли адрес электронной почты, который проходит проверку, но не возвращается?

Я использую Zend_Validate_EmailAddress для проверки адресов электронной почты для моей почтовой программы. Он проверяется в соответствии с RFC2822 — http://framework.zend.com/manual/en/zend.validate.set.html

Мой вопрос: действительны ли эти электронные письма, когда они проходят проверку?

[email protected]. [email protected]. и т. д. Обратите внимание на точку в конце.

Я обнаружил, что валидатор передает эти адреса электронной почты, которые явно неверны. Я не совсем понимаю, почему это должно пройти, может ли кто-нибудь мне помочь?

С Уважением


person Etienne Marais    schedule 24.03.2011    source источник
comment
Включение корневой зоны технически правильно, но не всем почтовым серверам это нравится. Например, у Exchange всегда были проблемы с этим.   -  person mario    schedule 24.03.2011


Ответы (2)


Адреса электронной почты не являются «явно неправильными»; имя DNS может заканчиваться . в конце, чтобы указать, что оно является абсолютным, а не относительным.

[ОТРЕДАКТИРОВАНО для добавления: вышеизложенное может вводить в заблуждение. В адресе электронной почты, по крайней мере, для SMTP, имена хостов всегда интерпретируются как полностью определенные, то есть «абсолютные». Таким образом, нет необходимости в конце . в части имени хоста адреса электронной почты. Однако завершающий . по-прежнему является допустимым синтаксисом имени хоста.]

person Gareth McCaughan    schedule 24.03.2011
comment
Хорошо, я согласен с вами, факт в том, что валидатор выкинул их в один день и передал на следующий. - person Etienne Marais; 24.03.2011
comment
Я понятия не имею, зачем это делать, если вы не включили проверку mx (которая на самом деле обращается к внешнему серверу, чтобы попытаться выяснить, будет ли рассматриваемый хост принимать электронную почту; конечно, это может измениться по причинам, которые полностью вне вашего контроля). - person Gareth McCaughan; 24.03.2011
comment
Что значит иметь относительный или абсолютный адрес? - person Etienne Marais; 24.03.2011
comment
DNS иерархичен, как структура каталогов файловой системы. Конечный . похож на начальный / в имени пути Unix и указывает, что имя должно использоваться как есть. (Настоящим термином является полное доменное имя или полное доменное имя.) Без этого, в зависимости от вашей настройки DNS, имя может интерпретироваться относительно; поэтому, если вы находитесь на машине foo.bar.com, то имя baz может интерпретироваться как baz.bar.com. (Или, в принципе, как baz.com -- но никто так не настраивает свой DNS -- или как baz на верхнем уровне -- но такого хоста нет.) - person Gareth McCaughan; 24.03.2011

Ниже приведено регулярное выражение, рекомендованное rfc2822:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Это регулярное выражение отнимает много времени, поэтому я считаю, что Zend использовал более простое регулярное выражение, которое непреднамеренно игнорирует завершающую точку.

Полезные ссылки:
http://www.regular-expressions.info/email.html
http://regexpal.com/

person sv_in    schedule 24.03.2011
comment
Спасибо. я ценю ваше время - person Etienne Marais; 24.03.2011