配置 Flask-Mail 以使用 GMail

Posted

技术标签:

【中文标题】配置 Flask-Mail 以使用 GMail【英文标题】:Configure Flask-Mail to use GMail 【发布时间】:2016-05-05 19:16:12 【问题描述】:

当我尝试使用以下设置使用 Flask-Mail 向 Gmail 的 SMTP 服务器发送电子邮件时,我收到[Errno -2] Name or service not known。如何修复我的配置以使用 Gmail 发送电子邮件?

from flask import Flask, render_template, redirect, url_for
from flask_mail import Mail,  Message

app = Flask(__name__)
app.config.update(
    MAIL_SERVER='smtp@gmail.com',
    MAIL_PORT=587,
    MAIL_USE_SSL=True,
    MAIL_USERNAME = 'ri******a@gmail.com',
    MAIL_PASSWORD = 'Ma*****fe'
)

mail = Mail(app)

@app.route('/send-mail/')
def send_mail():
    msg = mail.send_message(
        'Send Mail tutorial!',
        sender='ri******a@gmail.com',
        recipients=['ri*********07@msn.com'],
        body="Congratulations you've succeeded!"
    )
    return 'Mail sent'

【问题讨论】:

【参考方案1】:
    服务器是“smtp.gmail.com”。 端口必须与使用的安全类型相匹配。 如果将 STARTTLS 与 MAIL_USE_TLS = True 一起使用,则使用 MAIL_PORT = 587。 如果直接将 SSL/TLS 与 MAIL_USE_SSL = True 一起使用,则使用 MAIL_PORT = 465。 启用 STARTTLS 或 SSL/TLS,不能同时启用。 根据您的 Google 帐户的安全设置,您可能需要生成和使用 app password 而不是帐户密码。这可能还需要启用两步验证。无论如何,您应该设置它。
MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USERNAME = 'username@gmail.com'
MAIL_PASSWORD = 'app password generated in step 3'

【讨论】:

【参考方案2】:

对大卫主义答案的一个小而重要的补充:

您必须先在您的 Google 帐户上启用“两步验证”,然后才能设置应用专用密码。

【讨论】:

这应该是一个评论,而不是它自己的答案。

以上是关于配置 Flask-Mail 以使用 GMail的主要内容,如果未能解决你的问题,请参考以下文章

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

Flask-Mail使用config.from_object()时无法读取配置

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

Python Flask-Mail环境变量配置

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

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