Колба 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)

Надеюсь это поможет.

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