djangoのみならず、サービスの開発を進めていく中で、メールを送信するサービスを提供したいと思うことがありますよね。
そこで今回は、メールを送る方法を解説していきます。
メールを送るには2つのステップが必要です
まず、メールを送るために必要なことを整理していきましょう。
大きく分けて、2つのステップが必要です。
1. メール送信サーバーの設定
メールを送るには、メールを送るためのシステム(プログラム)がインストールされたサーバー(メールサーバー)を使う必要があります。
ちなみに、メールを送るサーバーはSMTPサーバーと呼ばれています。
2. SMTPサーバーを通じてメールを送るための設定
次に、メールサーバーを通じてメールを送るための設定をしていきます。
設定といっても、メールサーバーの情報と、送信アドレスやメール本文など数個の情報だけでメールが送れるようになりますので、心配しないでください。
次から、順番に設定を進めていきましょう。
メール送信サーバーの設定
まずは、メール送信サーバーの設定をしていきましょう。
この設定でやることは、djangoにメール送信サーバーの情報を伝えることです。
settings.pyファイルの中で設定をしていきましょう。
コード1 EMAIL_HOST = 'smtp.gmail.com'
2 EMAIL_PORT = 587
3 EMAIL_HOST_USER = 'gmailのアカウント名'
4 EMAIL_HOST_PASSWORD = 'gmailのパスワード'
5 EMAIL_USE_TLS = True
コードの解説(1) hostは、smtpサーバーのアドレスを指します。この指定をすることで、smtp.gmail.comというドメインにあるメールサーバーを使ってメールを送ります。ということをdjangoに伝えています。
(2) portはこのサーバーに接続するときのポートを指定しています。587というのはgmailが使っているポートですので、ほかのサーバーを使う場合はポート番号は異なる可能性があります。
(3) gmailのユーザー名です。gmailにログインするときに使うログイン名を入力します。
(4) gmailのパスワードです。gmailにログインするときに使うパスワードを入力します
(5) TLSとは、メールの文章を暗号化するかどうかを指定しています。gmailはデフォルトでTlSを使うように設定されていますので、この設定においてもTrueと指定しておきましょう。
(デフォルトではNoneになっています。)
これでメール送信サーバーの設定は完了です。
メールの送信設定
つぎに、メールを送るための設定をしていきましょう。
djangoでは、django.core.mailモジュールの中にメールを送るためのコードが格納されています。
今回は、メールを送るときに使われるsend_mailメソッドを使います。
実際のコードをみていきましょう。
コードfrom django.core.mail import send_mail
from django.http import HttpResponse
def index(request):
subject = "題名"
message = "本文"
from_email = "送信元メールアドレス"
recipient_list = [
"送信先メールアドレス"
]
send_mail(subject, message, from_email, recipient_list)
return HttpResponse('<h1>メールを送信しました</h1>')
題名、本文、送信元メールアドレス、送信先メールアドレスを設定しただけですが、これでsettigns.pyに書いたメール送信サーバーに接続し、メールを送ってくれます。