【2021年10月更新】Gmailで送信ができない?サーバーエラー500 WebアプリでGメールを使う方法を解説!

Django

(最終更新月:2021年10月)

当ブログで作成中の日報アプリでは、Eメールがコンソールで表示されるよう設定をしていました

開発環境ではこのままが便利で良いですが、本番環境ではエラーの原因となります

当記事を通じて、皆さんも持っているだろうGメールを使って、

  • メールを送信する方法

について解説していきます

私が「やってみよう!」と検索をし見つけたやり方は下記の通りでしたが、うまくいきませんでしたが皆さんはいかがでしょうか?

【①settings.pyを変更】

メールの設定をsettings.pyへ書き込みます(当アプリでは、「base.py」です)

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_SSL = True
EMAIL_PORT = 465
EMAIL_HOST_USER = 'Gmailログイン用のEメールアドレス'
EMAIL_HOST_PASSWORD = 'Gmailログイン用のパスワード'

【②Google側の設定】

Googleアカウント管理へすすみ、

アプリのアクセスを許可するよう、下記をオンにする

「これでアクセスができる!」とどのサイトにも書いてありましたが、本番環境では「サーバーエラー 500」とでてしまいうまくいきません

色々と試行錯誤した結果、やり方が見つかりましたので共有します

原因として、Gメール側のセキュリティ向上により以前のやり方が通用しなくなったと考えられます

全体の流れ

全体的には下記の流れで成功しました

  1. 二段階認証をON
  2. アプリパスワードを設定
  3. Gメールログインパスワードの代わりにアプリパスワードをsettings.pyへ設定

以前のやり方では二段階認証をオフにするなどの説明もありますが、どうもうまくいきません

新しいデバイスの登録をブラウザ上でする必要があるのですが、Webサーバーで使用しているリモートコンピューターではブラウザにアクセスができません

解決策としてアプリパスワードを設定するという方法で試したところ上手くいきました!

解説として二段階認証をONにするところから始めます

二段階認証をONにする

二段階認証をONにします

アカウント設定→セキュリティと進み、2段階認証プロセスをONにしましょう!

アプリコードを設定する

2段階認証プロセスをONにしましたら、すぐ下のアプリパスワードを設定します

アプリを選択で、その他を選びます(該当するものが選択肢にあればそちらを選びましょう!)

お好きな名前を入力しておきましょう

生成」を押すと、アプリパスワードが発行されます

こちらのパスワードをコピーしておきましょう

次はプロジェクト側の設定へ移ります

settings.pyの変更

ログインパスワードの代わりにアプリパスワードを入力しよう!

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_SSL = True
EMAIL_PORT = 465
EMAIL_HOST_USER = 'ログイン用のEメールアドレス'
EMAIL_HOST_PASSWORD = '設定したアプリパスワード'

これで設定は完了です!

メールの送信を試してみましょう

メール送信を試してみよう

メールの送信を試すには、シェルを使うとカンタンです

シェルを立ち上げて、

python manage.py shell

シェルが立ち上がりましたら、下記の通りメールを送信するコードを実行してみよう!

from django.core.mail import send_mail
send_mail('テストタイトル', 'テストメッセージ', 'あなたのアドレス', [あなたのアドレス])

メールが届きますか?

参考までに、send_mailメソッドには下記の引数を渡しています

send_mail(タイトル, メッセージ, 誰から送られたか, 誰に送るか(リスト))

まとめ

Googleも日々セキュリティ向上のために設定を変えています

現時点(2021年10月)では、こちらのやり方で成功しましたので参考になれば幸いです

本来であればブラウザ上で新しいデバイスからのログインの許可をすることで、Gmailが使えるようになります

ただWebサーバーでのアクセスだとそれが不可能のためこのようなやり方となりました

簡単にまとめると、

  1. 二段階認証をON
  2. アプリパスワードを発行
  3. settings.pyでログインパスワードの代わりにアプリパスワードを設定

という流れになります

次回以降、公開したアプリをGoogle検索で出てくるよう登録するための準備をしていきます

まずは、サイトマップというものを作成し、Googleにどんなページが存在しているのかを知らせる準備をしていきましょう!

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!
タイトルとURLをコピーしました