Как перехватить исключение SMTPRecipientsRefused (используя удаленный SMTP-сервер и django)? - PullRequest
3 голосов
/ 09 сентября 2011

Я пытаюсь понять, как это работает.

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

Мой вопрос здесь заключается в том, как smtplib может перехватить эту ошибку, если этот ответ занимает время? Когда я отправляю электронное письмо с использованием smtplib, оно никогда не вызывает исключение SMTPRecipientsRefused. Он просто отправляет электронное письмо и позже, когда нарочно используя недопустимый адрес электронной почты, я получаю сообщение об ошибке «Доставка следующему получателю окончательно не удалась:» в моем почтовом ящике для ответа. Это не помогает мне, так как я пытаюсь очистить базу данных адресов электронной почты от недействительных адресов электронной почты.

Есть функция проверки:

SMTP.verify(address)

Но я не верю, что это реальный вариант. Примечание от Python Docs на VRFY:
«Многие сайты отключают SMTP VRFY, чтобы помешать спамерам.»

Примечание по моей тестовой среде: Я использую django и удаленный SMTP-сервер (gmail / apps).
Q1: Является ли это причиной невозможности отловить ошибку? Должен ли я использовать локальный сервер?

Q2: Есть ли способ сделать это, кроме анализа моих фактических сообщений об ошибках из ящика для ответов на вопросы?

Заранее спасибо за любые мысли по этому поводу!

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011
  1. Да, именно поэтому вы не получаете исключение.Использование локального сервера не поможет, потому что ваш локальный сервер не знает, является ли данный адрес электронной почты действительным.Только почтовый сервер MX конечного домена имеет какую-либо подсказку, и часто не имеет смысла рассказывать вам об этом намного позже.
  2. Не совсем.Как подсказывает другой ответ, попробуйте Python imaplib или poplib , чтобы помочь вам получать отказов сообщения.

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

0 голосов
/ 09 сентября 2011

Да, к сожалению, SMTP VRFY был отключен на большинстве серверов в течение многих лет, особенно потому, что он может использоваться спаммерами для быстрого поиска на сервере действительных сообщений электронной почты.Вы должны будете сделать это вручную или почистить письма.Python-Imap поможет вам здесь.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...