Я хочу проверить, существует ли почтовый ящик для электронной почты с SMTP. Я могу делать следующее:
Затем выполняю следующие команды:
HELO somedomain.com
MAIL FROM:<verify@somedomain.com>
RCPT TO:<someone@yahoo.com>
Выше команды дают мне 250
ответ на недействительные электронные письма на моем локальном компьютере. Но когда я проверяю электронную почту на каком-нибудь онлайн-сервисе, я получаю 554
ответ (который правильный). В чем причина такого странного поведения (неверные результаты на локальном компьютере)?
Ваш RCPT TO:
должен получить 550
не 554
технически, если почтовый ящик не существует. А 554
используется, если команда не работает (например, неверный синтаксис команды). Однако, как сказал Грифиус, многие почтовые серверы ответят 250, если используемый синтаксис правильный. Он еще не проверяет, существует ли реальный почтовый ящик, ИЛИ он просто не хочет сообщать вам, существует адрес или нет.
В VRFY
технически команда - это то, что протокол SMTP «должен» использовать для проверки, существует ли адрес электронной почты или нет. Но некоторые известные почтовые службы не позволяют VRFY
или снова просто скажите: «Не уверен, но постараюсь доставить».
Причина того, что многие SMTP-серверы отвечают 250 OK, заключается в том, что часто они являются просто интерфейсными шлюзами для других почтовых серверов или «переходом» в последовательности. Таким образом, они позволят другому серверу пройти по цепочке независимо от того, действителен адрес или нет. В других случаях почтовые серверы не хотят, чтобы кто-то перебирал различные адреса электронной почты в надежде получить список недействительных и действительных.
вы не можете полагаться на SMTP при проверке получателя. многие почтовые серверы проверяют только адреса получателей после письмо принято в локальную очередь. если учетная запись получателя не существует, они отправляют возврат. (поведение "принять и отскочить").