配置Flask-Mail以使用GMail

ste*_*y94 12 python gmail flask flask-mail

当我尝试使用以下设置使用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'
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 24

  1. 服务器是"smtp.gmail.com".
  2. 端口必须与使用的安全类型相匹配.
    • 如果使用STARTTLS MAIL_USE_TLS = True,则使用MAIL_PORT = 587.
    • 如果直接使用SSL/TLS MAIL_USE_SSL = True,则使用MAIL_PORT = 465.
    • 启用S​​TARTTLS或SSL/TLS,而不是两者.
  3. 根据您的Google帐户的安全设置,您可能需要生成并使用应用密码而不是帐户密码.这可能还需要启用两步验证.无论如何你应该设置它.
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'
Run Code Online (Sandbox Code Playgroud)


小智 11

大卫的回答是一个小而重要的补充:

您必须先在自己的Google帐户中启用"两步验证",然后才能设置应用专用密码.

  • 这应该是一个评论,而不是它自己的答案. (5认同)