DjangoでHTMLメールを送信する
DjangoでHTMLメールを送信する方法です。
メールの送信設定
まず、setting.py
でメールサーバーの設定を行います。
下記のソースコードを参考に使用するメールサーバーのログイン設定を記述しましょう。
# setting.py
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'sample.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'info@sample.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_USE_TLS = True
メールの送信
メールの送信は、View
で行います。
メール本文にはrender_to_string()
を使用してテンプレートから本文を作成することができます。
メールのテンプレートは、HPを表示する時と同じテンプレートを使用する事ができます。
レガシーなメーラーは、HTMLメールに対応していないことがあるので、普通のメール本文も一緒に作成して送信してあげましょう。
# view.py
from django.core.mail import send_mail
...
def foo(request):
# 表題
subject = "表題"
# 送信元
from_email = "noreply@sample.com"
# 送信先
recipient_list = [
"info@sample.com",
]
# パラメータ
context = {
"name" : "foo",
}
# プレーンテキスト用テンプレート
msg_plain = render_to_string('mail_template/sample.txt', context)
# HTMLメール用テンプレート
msg_html = render_to_string('mail_template/sample.html', context)
send_mail(subject, msg_plain, from_email, recipient_list, html_message=msg_html,)