Intereting Posts
Отправка HTML-кода через JSON Драйвер CodeIgniter PDO использует запрос вместо подготовки? Разве это не менее безопасно? PhantomJS – «небезопасно-eval» не является разрешенным источником сценария в следующей директиве политики безопасности контента Laravel 4.1 Запуск миграции и настройка конфигурации из зависимостей пакетов Удалить строку из начала строки Проблема PHP $ _SESSION Symfony2 MVC: где мой код? move_uploaded_file не работает, нет ошибки Вытяните API-интерфейс JSON из URL-адреса и отображения в PHP Подтвердите имя пользователя как буквенно-цифровое с символами подчеркивания MAMP / Symfony: MAMP переопределяет параметр date.timezone от php.ini, Symfony не работает 500 Внутренняя ошибка сервера при использовании .htaccess для настроек PHP Как получить XML-данные как ассоциативный массив с атрибутами в качестве ключа в PHP Обработка данных полевого поля Array Соединение mysqli_query для уже подключенной страницы PHP

подтверждение адреса электронной почты

Возможные дубликаты:
Есть ли библиотека php для проверки адресов электронной почты?
Как проверить, существует ли почтовый адрес без отправки электронной почты?

Привет, народ,

как я могу проверить адрес электронной почты для поставщика электронной почты точно так же, как yahoo?

сценарий:

asdfasdf@yahoo.com

как я могу проверить его на yahoo.com, что указанное выше электронное письмо действительно?

Заранее спасибо.

—- Правила PHP —-

Надеюсь, следующий документ поможет:

Подтвердить адрес электронной почты с помощью PHP, правильно

Единственным способом «проверки» электронной почты является попытка отправить электронное письмо на этот адрес, но чаще всего регулярное выражение будет делать трюк.

Чтобы усложнить проблему, вам может потребоваться простое подтверждение, подобное этому

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,6}$ 

или несколько более сложный, подобный этому

 [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[AZ]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b 

Здесь есть довольно хорошая статья о проверке подлинности электронной почты

Вы можете отправить электронное письмо на адрес и подтвердить его пользователем, нажав на ссылку.

Сделайте SMTP-соединение с сервером и выполните поиск «Sender-Verify»:

 telnet <Yahoo MX> 25 helo here.com mail from: here@there.com rcpt to: asdfasdf@yahoo.com data 

Вы либо получите код для продолжения передачи, либо получите недопустимое сообщение получателя.

Найдите запись MX для этого адреса электронной почты.

Следующее регулярное выражение соответствует адресам электронной почты:

 ^([\w-\.]+)@((\[[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}\.)|(([\w-]+\.)+)) ([a-zA-Z]{2,4}|[0–9]{1,3})(\]?)$ 

rashmipandit@gmail.com – VALID

rashmi.pandit@gmail.com – VALID

rashmi_pandit@gmail.com – VALID

rashmi.pandit@gmail – INVALID

rashmi+pandit@gmail.com – INVALID

Если вы хотите более сложным в соответствии с рекомендациями RFC, вы можете использовать это:

 ^((([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$ 

Используйте этот бесплатный веб-сервис через SOAP-вызов, GET или POST. Все, что вам нужно сделать, это подать его на адрес электронной почты, и он вернет логическое значение, представляющее, является ли он фактическим, поставляемым адресом электронной почты:

http://www.webservicex.net/ValidateEmail.asmx?op=IsValidEmail

Там много почтовых рассылок спама / мусора (www.spam.la), которые позволяют получать письма по любому адресу. Поэтому я предлагаю не полагаться на «действительную» электронную почту в обычном смысле. Может быть, OpenID – это вариант? Для проверки «допустимого» формата вы можете использовать существующие функции, такие как filter_var () / FILTER_VALIDATE_EMAIL .

В большинстве приведенных выше ответов рассматривается проверка регулярного выражения адреса электронной почты. Чтобы убедиться, что адрес электронной почты действителен, вам необходимо подключиться к SMTP-серверу и отправить его. Все подробности и код PHP доступны здесь .

Используйте экономно, серверы Yahoo могут блокировать вас, если вы отправляете много запросов. Также рекомендуется использовать его вместе с регулярными выражениями, как описано другими.