Проверка подлинности электронной почты PHP / Ruby on Rails SMTP или проверка доставки почты или нет - PullRequest
0 голосов
/ 30 мая 2011

PS: я не спамер, и ни одно из моих заявлений не является.

У меня есть список из нескольких тысяч адресов электронной почты, которые я хочу проверить, если это действительный адрес электронной почты или не используется SMTP.

Я получил некоторый код http://code.google.com/p/php-smtp-email-validation/, но я сомневаюсь, что это заблокирует / включит мой IP / сервер.

Я уже проверил длинный список связанных вопросов по stackoverflow. Но никто не дает правильного решения для этого. Поскольку есть много компаний, которые предоставляют такие услуги. Как они управляют вещами?

Я открыт для других платформ, таких как Python и т. Д.

EDIT

Я могу понять, что нет точного способа определить, доставляется ли почта или нет. Но с вероятностью 50-90% есть ли способ проверить, доставлена ​​ли почта в рубинах по рельсам.

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

Это невозможно.В этом юниверсе есть абсолютно возможность узнать, доставлено сообщение или нет.

Некоторые протоколы, такие как X400, стараются выдавать уведомления о доставке, к сожалению, всегда есть случаи, когда они терпят неудачу.

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

При отправке сообщения участвует много организаций.Вы, ваш UA, ваш MTA, возможно какой-то промежуточный MTA, MTA получателя, UA получателя, получатель.Ну, нет, не совсем больше.Есть вероятность, что у вашего получателя есть несколько почтовых ящиков, и что он использует веб-сервис для сбора писем из своих нескольких ящиков, чтобы собрать их в один UA, поэтому это может выглядеть так: Вы, ваш UA, ваш MTA, возможно, какой-то посредникMTA, получатель MTA, коллектор UA, коллектор MTA, фактический получатель MTA, фактический получатель UA, получатель.Между каждым из этих прав может быть некоторый уровень положительного или отрицательного подтверждения.Но это все.Объект N будет знать, что сообщение было получено объектом N + 1 в цепочке, но затем связь закрывается, и он не будет знать, что и когда происходит между объектами N + 1 и N + 2.Если есть какая-то проблема с удачей, MTA может отправить отправителю сообщение об ошибке, но это больше не обязательно делать из-за спама и вирусов.

Ну, в конце концов, ваше сообщение может прийти кUA конечного получателя.Там можно что-то сделать, чтобы сообщить, что оно получено или, возможно, даже отображено, с помощью некоторого нестандартного заголовка в сообщении.Некоторые UA могут быть легко настроены для вставки этих заголовков и для того, чтобы соблюдать их или нет.Пользователи, обладающие конфиденциальностью и спам / вирусы, не активируют эту функцию (она позволяет сборщикам адресов легко проверять адрес электронной почты для перепродажи спамерам), поэтому вероятность того, что вы получите реальный ответ, будет очень низкой (если вы не отправляете электронные письма).до тупиков).

Но даже если эта функция активирована и работает хорошо, тот факт, что вы получаете сообщение, отправленное агентом UA получателя, в котором говорится, что ваша электронная почта была отображена, ничего не доказывает.Примечательно, что это не доказывает, что ваше сообщение было просмотрено получателем, тем более, что он прочитал его, и тем более, что он его понял!

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

Если вы хотите быть уверены, что почта доставлена ​​или нет, вы должны использовать протокол более высокого уровня.Например, если вы задаете вопрос в своем электронном письме, ожидая ответа A1 или ответа A2, у вас есть четыре возможности:

  • , вы получите ответ A1.Вы можете предположить, что почта доставлена, и читать.Но было ли это понято?Действительно ли А1 был ответом, который получатель должен был отправить?

  • Вы получили ответ А2.Вы можете предположить, что почта доставлена, и читать.Но было ли это понято?Действительно ли А2 был ответом, который получатель должен был отправить?

  • Вы получили ответ A3.Вы можете предположить, что письмо доставлено, прочитано и не понято.

  • Вы не получите ответ с некоторой задержкой.Вы не можете ничего предположить.Попробуйте отправить еще одно электронное письмо с запросом ответа.Если вы все еще не получили никакого подтверждения фактической связи, попробуйте позвонить получателю.Или встретиться лично.Или ударить его по лицу.Если вы все еще не получили никакого ответа, вы можете считать своего получателя в коме или мертвым, и предположить, что сообщение не прошло.(некоторые люди считают, что стоит общаться с кем-то, находящимся в коме, но я считаю, что стимулировать их мозг полезно только для вас, вы не можете ожидать ответов, они не начнут отвечать на ваши дискуссии, оставшиеся в живых после пробуждения).

0 голосов
/ 30 мая 2011

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

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

Если для данного домена был задан адрес «перехватить все», то есть *@example.com будетПринято независимо от того, существует ли учетная запись электронной почты для данного адреса, вы никогда не сможете проверить, является ли данный адрес действительным.

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

...