🙆
[Django] Gmailを送信する設定
Djangoでメールを送信したい
Web系のシステム、アプリケーションでよくある機能といえばメール送信です。通知に使ったり、ユーザー登録に使ったり。そんなよく使うメール機能をDjangoで実現する方法を紹介します。
メール送信には誰もが持っているであろうGmailを採用します。
環境
- Python 3.9
- Django 3.1
設定方法
Gmail(Googleアカウント)の設定
2段階認証を設定後、アプリパスワードを取得してそれを使う必要があります。あらかじめ設定しておきましょう。
参考記事はこちら。
settings.pyに追記
これを参考にしてsettings.pyを変更します。
settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #設定しなくてもデフォルトでこの値になるっぽい
EMAIL_HOST = 'smtp.gmail.com'
# EMAIL_HOST = 'smtp.googlemail.com' #これでもいける
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your.address@example.com'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # send_mailのfromがNoneの場合自動で入る。
EMAIL_HOST_PASSWORD = 'yourpassword'
EMAIL_HOSTはどっちを設定してもいけたので好きな方でいいと思います。公式ではsmtp.gmail.comを記載していたのでそっちを使うのがいいと思います。
EMAIL_HOST_PASSWORDは、取得したアプリパスワードを記載しましょう。
その他はテンプレ設定なので、どのサイトを見ても同じような紹介がされていると思います。
使ってみる
では使ってみましょう。
コードを書くのが面倒なのでshellでサクッとやってしまいます。
python manage.py shell
>>> from django.core.mail import send_mail
>>> send_mail('タイトル','本文','from@example.com',['to@example.com'],fail_silently=False,)
送信できたでしょうか?
送信できてない場合、メールアドレスやパスワードを確認してみてください。私は、django.core.mail.backends.smtp.EmailBackend
と設定するところをdjango.core.mail.backends.console.EmailBackend
としてたのでメール送れず悩みました。
Discussion