Flask-Mail not sending emails, no error is being reported

Flask-Email use smtplib which can set debug level: https://github.com/mattupstate/flask-mail/blob/master/flask_mail.py#L139. You can set it with MAIL_DEBUG = True or DEBUG = True. Also check that MAIL_SUPPRESS_SEND = False and TESTING = False.

With debug I can see in stdout mail progress: success, fail, recipients and etc.

See details: http://pythonhosted.org/Flask-Mail/#configuring-flask-mail.


tbicr has the most likely fix, check MAIL_SUPPRESS_SEND first.

What ended up burning me (being new to flask) is that when you instantiate your Mail() object, be sure it's after you've set your app.config values. The Mail() object doesn't go back and look at these values after the fact, so they will default to bad values. What's frustrating is that you won't see any errors when you try to send messages with the default/bad values. At least not as of my posting.


I know this post is from a while ago, but I just ran into the same issue. Like @tbicr mentioned make sure that app.testing is set to False. As it states in the Flask-Maildocs here:

"If the setting TESTING is set to True, emails will be suppressed. Calling send() on your messages will not result in any messages being actually sent."

This was exactly my problem. I implemented Google reCAPTCHA into one of my forms and the app.testing was set to True so I did not have to hit the reCAPTCHA box every time. By removing the app.testing or by setting it to False, the emails were able to be sent.

Tags:

Flask