Трудность отправки электронной почты с использованием Python

Я пытаюсь заставить Python отправлять электронные письма. Сначала я запустил python smptd следующим образом:

python -m smtpd -n -c DebuggingServer localhost:1025

Затем, адаптируя пример из https://www.tutorialspoint.com/python/python_sending_email.htm, у меня есть следующий скрипт:

#!/usr/bin/python

import smtplib

sender = 'from@fromdomain.com'
receivers = ['brt381@gmail.com']

message = """From: From Person <from@fromdomain.com>
To: To Person <brt381@gmail.com>
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
   smtpObj = smtplib.SMTP('localhost:1025')
   smtpObj.sendmail(sender, receivers, message)
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

Когда я запускаю этот скрипт, я получаю сообщение "Успешно отправлено письмо". В моем другом терминальном окне (то, которое содержит python smptd), это показывает это после запуска скрипта:

---------- MESSAGE FOLLOWS ----------
From: From Person <from@fromdomain.com>
To: To Person <brt381@gmail.com>
Subject: SMTP e-mail test
X-Peer: ::1

This is a test e-mail message.
------------ END MESSAGE ------------

Но... электронное письмо не отправляется. Есть идеи, что может быть не так? Это работает просто отлично - электронная почта отправляется:

/usr/sbin/sendmail brt381@gmail.com <<<"hello"

1 ответ

Решение

На самом деле вы отправляете (в первом примере) свою электронную почту через локальный SMTP-сервер разработки, потому что вы упоминаете DebuggingServer класс, который, как сказано в документации:

Создайте новый сервер отладки. Аргументы в соответствии с SMTPServer. Сообщения будут отброшены и напечатаны на стандартный вывод.

Другие вопросы по тегам