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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用flask-mail通过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)

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

答案

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

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

另一答案

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

这是我项目的样本

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

对我来说这很有效。

以上是关于使用flask-mail通过gmail发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

配置 Flask-Mail 以使用 GMail

Flask-Mail 尝试连接到 Gmail 时超时

Flask-Mail 未使用 Gmail 和应用密码进行身份验证

Flask 学习-61.Flask-Mail 发送邮件

使用flask-mail发送电子邮件时出现的问题

Flask-mail 批量发送 HTML 电子邮件,在 html 中使用波斯语字体