使用flask-mail通过gmail发送电子邮件

时间:2017-10-08 08:31:04

标签: python-3.x email flask gmail

我在Python / Flask中设置了一个简单的CRUD webapp,当一个特定功能被激活时(批准请求)我想向用户发送电子邮件通知,但对于我所有人来说我试过无法通过我的代码发送电子邮件。

这是我的配置文件,其中设置了所有相关的环境变量(在Config对象内):

MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT=465
MAIL_USE_SSL=True
MAIL_USERNAME = '**@gmail.com'
MAIL_PASSWORD = '**'

我还尝试在app / init .py文件中调用app.config.update(这些值)。这是当前的代码

mail = Mail()

def create_app(config_name):
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_object(app_config[config_name])
    app.config.from_pyfile('./config.py')
    app.config.update(
    MAIL_SERVER='smtp.gmail.com',
    MAIL_PORT=465,
    MAIL_USE_SSL=True,
    MAIL_USE_TLS=False,
    MAIL_USERNAME = '**@gmail.com',
    MAIL_PASSWORD = '**')

    mail.init_app(app)

最后,这是我实际尝试发送电子邮件的代码:

msg = Message(html=html, sender='**@gmail.com', subject='Your Reservation for %s' % reservation.item.name, recipients=['**'])
mail.send(msg)

此外,它目前无声地失败,我不知道如何查看正在发生的错误。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

我在评论中的建议确实是问题的答案。

启用"安全性较低的应用"在Google帐户设置中,是修复OP遇到的挂机的必要步骤。来自Google支持页面的This link指导您了解如何启用此选项。

答案 1 :(得分:0)

我认为,您应该将发送协议切换为TLS

这是我项目的样本

MAIL_SERVER='smtp.gmail.com',
MAIL_PORT=587,
MAIL_USE_TLS=True,
MAIL_USERNAME = '**@gmail.com',
MAIL_PASSWORD = '**'
对我来说,这非常有效。