web-dev-qa-db-fra.com

Configurer Flask-Mail pour utiliser GMail

Lorsque j'essaie d'envoyer un e-mail à l'aide de Flask-Mail au serveur SMTP de Gmail à l'aide des paramètres ci-dessous, j'obtiens [Errno -2] Name or service not known. Comment puis-je corriger ma configuration pour envoyer des e-mails avec Gmail?

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

app = Flask(__name__)
app.config.update(
    MAIL_SERVER='[email protected]',
    MAIL_PORT=587,
    MAIL_USE_SSL=True,
    MAIL_USERNAME = 'ri******[email protected]',
    MAIL_PASSWORD = 'Ma*****fe'
)

mail = Mail(app)

@app.route('/send-mail/')
def send_mail():
    msg = mail.send_message(
        'Send Mail tutorial!',
        sender='ri******[email protected]',
        recipients=['ri*********[email protected]'],
        body="Congratulations you've succeeded!"
    )
    return 'Mail sent'
14
stevenperry94
  1. Le serveur est "smtp.gmail.com".
  2. Le port doit correspondre au type de sécurité utilisé.
    • Si vous utilisez STARTTLS avec MAIL_USE_TLS = True, puis utilisez MAIL_PORT = 587.
    • Si vous utilisez SSL/TLS directement avec MAIL_USE_SSL = True, puis utilisez MAIL_PORT = 465.
    • Activez STARTTLS ou SSL/TLS, pas les deux.
  3. Selon les paramètres de sécurité de votre compte Google, vous devrez peut-être générer et utiliser un mot de passe d'application plutôt que le mot de passe du compte. Cela peut également nécessiter l'activation de la vérification en deux étapes. Vous devriez probablement configurer cela de toute façon.
MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USERNAME = '[email protected]'
MAIL_PASSWORD = 'app password generated in step 3'
27
davidism

Un petit mais important ajout à la réponse du davidisme:

Vous devez activer la "validation en deux étapes" sur votre compte Google avant de pouvoir configurer des mots de passe spécifiques à l'application.

11
EyeWrite