#前提
前回の続きです。
https://qiita.com/yusuke_mrmt/items/ebefdb6e8704913f6a4c
#本題
##Gmailでアプリパスワードの設定を行います。
二段階認証を設定します。
まずGmailアプリを開き左上にあるメニューバーをタップします。
下の方に設定とあるのでタップします。
Googleアカウントの管理をタップします。
セュリティの項目を選択し、
アカウントの保護や適切な設定を行った上で
二段階認証などの設定をしましょう。
※二段階認証設定後に、アプリパスワードの項目が現れます。
取得したパスワードは、アプリにだけ使うのでGoogleさんが仰ってるように
どこかに保管しておくなどの処置は取らなくてもいいと思います。
ですがDjangoの設定ファイル**settings.py
**に記述するので
テキストエディタにコピーしておきましょう。
##メール送信機能を追加する
Djangoのメール送信機能を追加していきます。
まずは設定ファイルの**settings.py
**に
メールサーバーを使う為の記述をします。
GitHubでコードを投稿する際は、.gitignore
ファイルなどで
除外するような施しを完全に行いましょう。
STATIC_URL = '/static/'
# メールサーバー用
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'アドレス@gmail.com'
EMAIL_HOST_PASSWORD = '取得したアプリパスワード'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
次にviews.py
にて、
お問い合わせフォームに書かれたメッセージを処理し
適切な応答をするように追記していきます。
from django.shortcuts import render, redirect
from .forms import ContactForm
from django.http import HttpResponse # 追記
from django.conf import settings # 追記
from django.core.mail import BadHeaderError, send_mail # 追記
.........
def contact_form(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# 追記
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
sender = form.cleaned_data['sender']
myself = form.cleaned_data['myself']
recipients = [settings.EMAIL_HOST_USER]
if myself:
recipients.append(sender)
try:
send_mail(subject, message, sender, recipients)
except BadHeaderError:
return HttpResponse('無効なヘッダーが見つかりました。')
return redirect('contact:complete')
else:
form = ContactForm()
return render(request, 'contact/contact_form.html', {'form': form})
.........
form.is_valid()
で検証されたデータを整形して返すために
cleaned_data[]
を使って変数に格納します。
recipents
は設定ファイルの
settings.pyで定義した自分のアドレスを渡しています。
send_mail
では、4つの引数が必須です。
自分のアドレス宛にsubject・message・senderを送ります。
※sender(送信者のアドレス)は自分のメール受信箱に表示されないので後に変更します。
BadHeaderError
は、ヘッダインジェクションを防ぐ為の記述です。
if_myself
は、送信者がチェックボックスにチェックを入れたとき、
送信者のアドレス(sender)がrecipientsに追加され双方にメールが送られます。
双方に送られたメールの送信者は設定した自分のアドレスからとなります。
以上で一度、送信してみましょう。
送信完了へリダイレクトされれば成功です。