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

问题描述 投票:1回答:2

我在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)

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

python-3.x email flask gmail
2个回答
1
投票

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

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


0
投票

我想,您应该将发送协议切换到TLS

这是我项目的样本

MAIL_SERVER='smtp.gmail.com',
MAIL_PORT=587,
MAIL_USE_TLS=True,
MAIL_USERNAME = '**@gmail.com',
MAIL_PASSWORD = '**'

对我来说这很有效。

© www.soinside.com 2019 - 2024. All rights reserved.