Djangoでgmailを送信する方法を説明します。
普通にDjangoでメール送信プログラムを書くだけだと、googleのセキュリティにはじかれてしまうため、gmailでいくつか設定を行う必要があります。
gmailの設定
- まず、メール送信用のgmailアドレスを用意します。
- gmailにログインして自分のアイコンをクリックし、「google アカウント管理」を選択します。
- 左側の項目一覧から「セキュリティ」をクリックします。
- 2段階認証プロセスをクリックし、画面の指示に従い有効にします。
- 前のページに戻り、「アプリ パスワード」をクリックします。
- 端末を選択からその他(名前を入力)を選択し、任意の名前を入力します。
- 「生成されたアプリ パスワード」という画面が表示されたら、16桁のアルファベットが表示されるので、こちらをメモしておきます。
Djangoの設定
今度はDjango側の設定です。
settings.pyに以下のコードを書きます。
ここで先程メモしたパスワードを使用します。
settings.py
# メール送信設定
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '先程設定を行ったgmailアドレス'
EMAIL_HOST_PASSWORD = '先程メモしたパスワード'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
次にviews.pyへ以下のコードを書きます。
コードはviews.pyの中でメール送信を実行したいところに書いてください。
views.py
send_mail('タイトル', '本文', '送信元アドレス', ['宛先アドレス'], fail_silently=False)
下記の例では、DBにデータが保存されたタイミングでメール通知を行っています。
class CommentViewListPage(generic.CreateView):
model = Comment
form_class = CommentCreateForm
def form_valid(self, form):
# commentのformに入力された内容をDBに保存する
form.save()
# コメントが
send_mail('FYblogDB更新通知', 'DBが更新されました。', 'hogehoge@gmail.com', ['hogehoge@gmail.com'], fail_silently=False)
# Topページに戻る
return redirect('/')
これで、send_mailが実行されると、メールが送信されるようになります。