13

Flask Mail アプリケーションで使用されるアプリ構成 (Miguel Grinberg Flask 開発本に従う):

app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')

メールのユーザー名とパスワードの変数が正しく設定され、再チェックされました。次のコードを使用してメッセージを送信しようとすると、

from flask.ext.mail import Message
from hello import mail
msg = Message('test subject', sender='same as MAIL_USERNAME', recipients=['check@mail.com'])
msg.body = 'text body'
msg.html = '<b>HTML</b> body'
with app.app_context():
    mail.send(msg)

送信中に、アプリケーションで何度も次のエラーが発生します。

SMTPSenderRefused: (530, '5.5.1 Authentication Required. Learn more at\n5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qb10sm6828974pbb.9 - gsmtp', u'configured MAIL_USERNAME')

エラーの回避策はありますか?

4

4 に答える 4

1

私もこの本をたどり、同じ問題を抱えています。あちこち掘り下げた後、問題の根本的な原因を見つけました。ただし、あなたが同じケースになるかどうかはわかりません。

app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')

ご覧のとおり、flask アプリはos.environ.get()を介して電子メールの資格情報を取得します。この環境変数をシステムで一時的に設定すると、私の場合は Mac OSX で、端末セッション後にそれらがなくなるので、次のように、次回ターミナルに入るときに再度設定する必要があります。

export MAIL_USERNAME=**YOUR EMAIL**
export PASSWORD=**YOUR PASSWORD**

このシナリオが原因でこのエラーが発生しました。それらを永続的に設定するには、これらの変数をホーム ディレクトリの.bash_profileファイルに含める必要があります。

于 2017-01-20T09:09:51.500 に答える
1

解決するには、次の 2 つのことを行います。

  1. このリンクを使用して、「安全性の低いアプリを許可する」をオンにします - https://myaccount.google.com/lesssecureapps

  2. 電子メールとパスワードにハードコードされた値を使用すると、正常に機能しました。ファイル「init .py」で、次のセクションを編集します。

os.environ.get を使用しないでください

app.config['MAIL_USERNAME'] = 'youremail@gmail.com'
app.config['MAIL_PASSWORD'] = 'yourpassword'
于 2019-02-06T13:15:51.627 に答える