Настроить Flask-Mail для использования GMail

Когда я пытаюсь отправить электронное письмо с помощью Flask-Mail на SMTP-сервер Gmail, используя указанные ниже настройки, я получаю [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'

2 ответа

Решение
  1. Сервер "smtp.gmail.com".
  2. Порт должен соответствовать типу используемой защиты.
    • При использовании STARTTLS с MAIL_USE_TLS = Trueзатем используйте MAIL_PORT = 587,
    • При использовании SSL/TLS напрямую с MAIL_USE_SSL = Trueзатем используйте MAIL_PORT = 465,
    • Включите STARTTLS или 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'

Небольшое, но важное дополнение к ответу давидизма:

Вы должны включить "двухэтапную проверку" в своей учетной записи Google, прежде чем сможете установить пароли для конкретных приложений.

Другие вопросы по тегам