Проверка существования E-mail адреса на PHP

В один прекрасный момент мне в голову пришла мысль — почему бы не проверять вводимые на сайте адреса электронной почты на предмет их существования? Всем уже давно известно, как проверять правильность введенного пользователем адреса, но, ведь, куда интереснее еще и убедиться в том, что адрес существует, а не был взят с потолка.

Реализовать эту мысль на PHP я и взялся одним субботним вечером. И вот, что из этого вышло…

Сразу скажу, что реализация эта — простейшая. И она в любом случае требует доработки под какие бы то ни было условия. Но представленное решение работоспособно, и выполняет поставленную задачу вполне успешно.

Мысль использовать какие-нибудь уже существующие средства для работы с SMTP была отметена сразу, в силу невозможности выполнить лишь минимальный набор команд, не отправляя письма, и неявности происходящего. Представленный же пример работает с сокетами, предельно прост и понятен, что делает его удобным для модернизации. Реализация его настолько же проста, насколько проста

и сама идея: выяснить, каким сервером обслуживается интересующий адрес электропочты, подключиться к нему и, отправив три нехитрых команды, по ответам попытаться выяснить, существует указанный ящик или нет. Реализация нуждается в доработке, потому что разные почтовые серверы могут по-разному отвечать на запрос «RCPT TO:», но для простейшей проверки предложенного варианта должно быть вполне достаточно.

Код снабжен всеми необходимыми комментариями, и, в принципе, в больших пояснениях не нуждается:

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

ЗЫЖ Поднимаем маны, и вспоминаем, что dns_get_record появилась только в PHP5, а под Windows — с версии 5.3.0. Пользователям более ранних версий просьба не беспокоиться. (;

Источник: freehabr.ru

Категория: Электронная почта

Похожие статьи: