web-dev-qa-db-ja.com

GMailを使用するように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='[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. サーバーは「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アカウントのセキュリティ設定によっては、アカウントパスワードではなく app password を生成して使用する必要がある場合があります。これには、2段階認証を有効にする必要がある場合もあります。とにかくこれを設定する必要があります。
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

ダビディズムの答えへの小さなしかし重要な追加:

アプリ固有のパスワードを設定する前に、Googleアカウントで「2段階認証プロセス」を有効にする必要があります。

11
EyeWrite