Отправка электронных писем через smtplib не возвращает коды ошибок

#python #smtp #smtplib

#питон #smtp #smtplib

Вопрос:

Проблема

Я пытался отправлять электронные письма с помощью программы, которую я написал на Python, в основном основанной на модуле smtplib. К сожалению, он не возвращает коды ошибок, если таковые имеются. Другими словами, это не вызывает smtplib.SMTPRecipientsRefused исключений. Я использую SMTP-серверы Hostinger на порту 587, если это имеет какое-либо значение.

Программа

Он выполняет следующие действия: подключается к SMTP-серверу, отправляет сообщение. Функция входа в систему выглядит следующим образом:

 def login():  global server  server = smtplib.SMTP(HOST, PORT)  server.connect(HOST, PORT) # sometimes this is needed to establish connection first  server.ehlo()  server.starttls()  server.ehlo()  logged = server.login(USERNAME_SMTP, PASSWORD_SMTP)  # server.set_debuglevel(1)  print('Logged in:', logged, 'n')  return logged  

Затем я собираю свое сообщение с помощью MIME-составного сообщения, email.mime.multipart которое включает в себя как HTML, так и обычный текст, а также заголовки. Наконец, я отправляю свое сообщение, используя следующую функцию:

 def send_message():  try:  server.sendmail(SENDER, RECIPIENT, msg.as_string())  pass  except smtplib.SMTPRecipientsRefused as e:  print(e)  except smtplib.SMTPServerDisconnected as e:  print(e)  login()  send_message()  

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

Может быть, кто-то сталкивался с подобной ситуацией и знает, что может вызвать эту проблему?

РЕДАКТИРОВАТЬ: Совлед, сделал обходной путь, связавшись с сервером IMAP и «списав» письма, не доставленные.