Колба sendmail не показывает никаких ошибок, но письмо не получено
У меня есть приложение Python Flask, настроенное и работающее на CherryPy (размещено на Digital Ocean, ОС: Debian GNU/Linux 7.0). Я использую Flask Sendmail для отправки писем, запустил приложение и попытался отправить электронное письмо, оно не показывает никаких ошибок и работает правильно. Но письмо не получено (проверил спам и все остальные папки).
Любая помощь? Я добавил код ниже.
Конфигурация для приложения Flask:
app.config.update(
DEBUG=True,
MAIL_DEBUG=True,
MAIL_FAIL_SILENTLY=False,
MAIL_SUPPRESS_SEND=False,
DEFAULT_MAIL_SENDER='Tester',
TESTING=False
)
Часть отправки электронной почты:
mail_handler = Mail()
mail_handler.init_app(app)
try:
msg = Message("Hello World",
recipients='jane@doe.com')
msg.html += '<b>HTML content for email</b>'
if mail_handler!=None:
mail_handler.send(msg)
print "email sent"
return {"status": "success", "message": "Please check your email"}
except Exception as e:
return {"status": "failed", "message": "Failed"}
1 ответ
Недавно я провел весь вечер с этой штукой тоже. Рабочий почтовый модуль, который я наконец получил, находится ниже:
from flask_mail import Mail, Message
mail = None
def configure_mail(app):
# EMAIL SETTINGS
global mail
app.config.update(
MAIL_SERVER = 'smtp.gmail.com',
MAIL_PORT = 465,
MAIL_USE_SSL = True,
MAIL_USERNAME = 'blabla@gmail.com',
MAIL_PASSWORD = 'mega_password',
DEFAULT_MAIL_SENDER = 'blabla@gmail.com',
SECRET_KEY = 'abcdefd_thats_a_charming_secret_key',
)
mail=Mail(app)
def send_email(subject, sender, recipients, text_body, html_body):
msg = Message(subject, sender = sender, recipients = recipients)
msg.body = text_body
msg.html = html_body
mail.send(msg)
Затем я просто вызываю реализованный метод из нужных мест:
from emails import send_email # 'emails' is a name of the module provided above
send_email('messageTopic', 'blabla@gmail.com', ['blabla@gmail.com'], 'composedMsg', None)
И не забудьте вызвать код конфигурации перед отправкой электронной почты. Например:
from emails import configure_mail # 'emails' is a name of the module provided above
app = Flask(__name__)
app.debug = True
configure_mail(app)
Надеюсь это поможет.