はじめに
ここでは、Djangoでメール送信をする方法について解説していきます。
お問い合わせフォームの作成などに使うことができます。
デフォルトの設定
まず、settings.py
にメール関連の設定を記述します。
以下は、Gmailを用いる場合の例です。
settings.py
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'sample@gmail.com'
EMAIL_HOST_PASSWORD = アプリ用のパスワード
EMAIL_PORT = 587
EMAIL_USE_TLS = True
メールの件名や宛先の設定
ここでは、お問い合わせフォームで
forms.py
にメール送信用の関数を定義します。
forms.py
from django import forms
from django.conf import settings
from django.core.mail import BadHeaderError, EmailMessage
from django.http import HttpResponse
def send_email(self):
subject = 'お問い合わせ:' + self.cleaned_data['title']
name = self.cleaned_data['name']
email = self.cleaned_data['email']
from_email = '{name} <{email}>'.format(name=name, email=email)
message = self.cleaned_data['body']
recipient_list = [settings.EMAIL_HOST_USER]
email_message = EmailMessage(subject, message, from_email, recipient_list, reply_to=[email])
try:
email_message.send()
except BadHeaderError:
return HttpResponse('無効なヘッダが検出されました。')
EmailMessage
インスタンスを作成するところの、reply_to
を設定しないと、問い合わせをした人のメールアドレスが分からずメール返信で回答できなくなってしまうので、忘れず入れるようにします。
まとめ
ここでは、Djangoでメール送信をするときに必要な設定について解説しました。
お問い合わせフォーム以外にも応用できます。