[Django] メール送信する方法。SMTP利用とconsole利用について

SMTPの場合

settings.pyに以下を追記。

# For e-mail
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.mailserver.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'administrator'
EMAIL_HOST_PASSWORD = 'password'
  • EMAIL_HOST_USERとEMAIL_HOST_PASSWORDはベタ書きするとgit pushした時にセキュリティインシデントとなるため注意
  • DBに格納するか、OSの環境変数ファイルに書くことをオススメ

以下はDjango起動時の環境変数ファイルに書く例

import os

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = os.environ.get('EMAIL_HOST', 'localhost')
EMAIL_PORT = os.environ.get('EMAIL_PORT', '587')
EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER', 'administrator')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD', 'password')

Consoleの場合

cosoleモードはメールを送らず、コンソールに表示してくれる設定。
settings.pyに以下を追記。

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

メールの送信

from django.core.mail import send_mail

subject = "メール題名"
message = "これはテストメールですl"
from_email = "noreply@sample.com"
recipient_list = [
    "sample@example.com"
]
send_mail(subject, message, from_email, recipient_list)
よかったらシェアしてね!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください