DjangoにSendGridを導入する方法
Django のメール送信を SendGrid を使用して送信するように変更していきます。
SendGrid を使用すると、メールを確実に配信することができ、到達状況をリアルタイムで確認できるようになります。
動画解説
動画でも解説していますので、参考にしてください。
アカウント登録
まずは SendGrid のアカウントを登録します。
Start for free
ボタンから登録しましょう。
API 作成
API キーを作成します。
Settings->API Keys から API キーを作成することができます。
API キーを作成したらメモしておきましょう。
送信元登録
送信元を登録します。
Marketing->Senders から送信元を登録します。
ライブラリインストール
Django にdjango-sendgrid-v5
ライブラリをインストールします。
requirements.txt
django-environ~=0.4.5
django-sendgrid-v5~=1.1.1
$ pip3 install -r requirements.txt
設定
settings.py に SendGrid の設定をします。
以前使用していた、EMAIL_BACKEND などの設定は使用しませんので、削除します。
DEFAULT_FROM_EMAIL
とSENDGRID_API_KEY
は環境ファイルに記載します。
ローカルでテストしたい場合は、SENDGRID_SANDBOX_MODE_IN_DEBUG
を True に設定します。
実際にメールを送信したい場合は、SENDGRID_SANDBOX_MODE_IN_DEBUG
を False に設定します。
メール内の URL のトラッキングをしたい場合は、SENDGRID_TRACK_CLICKS_PLAIN
を True に設定します。
トラッキングをしない場合は、False に設定します。
設定はドキュメントを参考に設定してください。
settings.py
import environ
import os
env = environ.Env()
env.read_env(os.path.join(BASE_DIR, '.env'))
# # ローカル確認用
# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
# # 本番環境用
# # EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# EMAIL_HOST = 'smtp.gmail.com'
# EMAIL_PORT = 587
# EMAIL_HOST_USER = 'xxx@gmail.com'
# EMAIL_HOST_PASSWORD = 'xxx'
# EMAIL_USE_TLS = True
# DEFAULT_FROM_EMAIL = 'xxx@gmail.com'
# SendGridを使用
EMAIL_BACKEND = 'sendgrid_backend.SendgridBackend'
# 送信元メールアドレス
DEFAULT_FROM_EMAIL = env('DEFAULT_FROM_EMAIL')
# SendGridのAPIキー
SENDGRID_API_KEY = env('SENDGRID_API_KEY')
# ローカル用
SENDGRID_SANDBOX_MODE_IN_DEBUG = True
# 本番環境用
# SENDGRID_SANDBOX_MODE_IN_DEBUG = False
# URLのトラッキングをOFF
SENDGRID_TRACK_CLICKS_PLAIN = False
# ターミナルに表示
SENDGRID_ECHO_TO_STDOUT = True
環境ファイル
.env
ファイルにメールアドレスと SendGrid の API キーを記載します。
.env
DEFAULT_FROM_EMAIL=xxxx@gmail.com
SENDGRID_API_KEY=xxxx
以上で、SendGrid を使用してメール送信が可能になりました。
Discussion