DjangoでGmailを利用したPOSTフォームを利用した際に陥りやすいエラーになります。
Djangoでお問い合わせフォームのような仕様の箇所に、ユーザーがPOSTしたと同時に発生します。
本日はその解決方法を紹介します。
こちらの記事との関連記事になります。
コンテンツ
エラー内容
ブラウザ側のエラー表示
POSTしたと同時にエラーが表示されます。
SMTPAuthenticationError at /inquiry/
(535, b’5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials mw7-20020a17090b4d0700b011b8baf6b6f5sm12828719pjb.50 – gsmtp’)
Gmail側の表示
Gmail側では一応メールは届き、その正体はPOSTした内容とは関係なく重大なセキュリティ通知になります。
試しに、アクティビティを確認をクリックしてもいいのですが、要は、「きちんと有効にする場合はセキュリティ基準を満たす処理をしてください。」とのことです。
解決方法
それでは解決方法を紹介していきます。
アプリパスワードを使用する
アプリパスワードとは、googleアカウントのパスワードではなくアプリが使用するためだけのパスワードになります。
「アプリが使用するためだけのパスワード?」って話になりますが見てもらうのが一番早いので、こちら(https://myaccount.google.com/security)のURLをクリックしてみてください。
中断よりやや上に、Googleへのログインという項目がありますので、2段階認証プロセスをクリックします。
「使ってみる」をクリックします。
あとは手順に従って進めてみてください。
最後に、「2段階認証プロセスを有効にしますか?」という画面が出ますので、「有効にする」をクリックします。
無事設定が完了すると、以下のように2段階認証プロセスが有効になった確認メールが届きます。
最初のこちら(https://myaccount.google.com/security)のURLに戻ります。
新しくアプリ パスワード という項目ができていますのでクリックします。
アプリのパスワードを設定します。
生成すると、以下のように16桁のパスワードが生成されますのでこちらをメモしておきます。
この16桁のパスワードを、djangoのsettings.pyには以下のように書きます。
1 2 3 4 5 6 |
# メールサーバー用 EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = <送信したいgmailアドレス> EMAIL_HOST_PASSWORD = <生成した16桁のパスワード> EMAIL_PORT = 587 EMAIL_USE_TLS = True |
以上の設定が完了できれば、今度はきちんとメールを送信することができます。
以上。
最後に
いかがでしたでしょうか。
以上が「【Django】メール送信時のSMTPAuthenticationErrorの解決方法」の紹介記事になります。
コメントを残す