#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 и «списав» письма, не доставленные.