Djangoでウェブサイトを開発していく中で、メールの送信機能を実装したい場合もあるかと思います。
そこで今回は、sendgridというサービスを使ってメールを送る方法をお伝えしていきます。
sendgridのサイトでユーザー登録
まずはsendgridのサイトにいき、ユーザー登録をしましょう。
日本の場合は構造計画研究所という会社が代理店をしているようですが、ログインをすると結局英語のサイトが表示されてしまいます。
また、構造計画研究所経由で登録をすると、アカウントの作成まで数日の時間がかかってしまいます。
ですので、すぐに使いたい方は英語のサイトから直接アカウント登録をしてもよいかもしれません。
今回は、英語のサイトで登録を進めていきます。
サイトに入ったら、右上の「START FOR FREE」というボタンをクリックしてください。
すると、以下のような画面が出ますので、「Free」をクリックした上で右下の「Try for Free」というボタンを押してください。
すると以下のような画面が出ますので、ユーザー名、メールアドレス、パスワードを入力して「Create Account」をクリックしてください。
なお、ここで入力するメールアドレスが、sendgridの中で使われる送信メールアドレスになるわけではありませんのでご安心下さい。
これでユーザー登録は完了です。
Djangoの設定を進める
ユーザー登録が完了しましたので、次にDjangoでの設定を進めていきましょう。
コード-urls.py
urlpatterns = [
path('mail/', sendmail),
]
つぎに、viewの設定を進めていきます。
コード-views.py
from django.core.mail import send_mail
def sendmail(request):
send_mail('題名', 'メッセージ', '送信元のメールアドレス', ['送信先のメールアドレス'], fail_silently=False)
このあたりは、メールを送るときに最低限必要になる情報ですので、難しい部分はないかと思います。
最後に、settings.pyファイルの設定をしていきましょう。
メールを送るための情報はここに書いていきます。
コード
-settings.py
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'sendgridのusername'
EMAIL_HOST_PASSWORD = 'sendgridのpassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
コード
一つ押さえておきたいポイントは、sendgridのメール送信サーバーを使ってメールを送っている。ということです。
つまり、送信者のメールアドレスがtaro@example.comだったとしても、あくまでsmtp.sendgrid.netというサーバーからメールが送られているという点を意識しましょう。
これで、サーバーを立ち上げ、localhost:8000/mail/をブラウザに入力してみると、メールが送られていることが確認できます。
今回は、以下の設定でメールを送ったとしましょう。
send_mail('こんにちは!', 'お元気ですか?', 'taro@example.com', ['送信先のメールアドレス'], fail_silently=False)
その上で、メールボックスを確認してみます。
無事にメールが届いていることが確認できました。
このように、Djangoに備えられているメソッドを使うことで、簡単にメールを送ることができます。
via sendgrid.netを消す方法
もう一度メールボックスをみてみましょう。
via sendgrid.netという書かれています。
このメールの送信者はexample.comというドメインですが、メールはsendgridのメールサーバーが使われていますので、このような表示が出てしまったのです。
これだと、受信した人によっては少し怪しいと思うかもしれません。
しかし、sendgridでは、設定をすることがこのvia sendgrid.netを消すことができます。
その方法については、sendgridでメールを送った時、送信アドレス横のサーバー情報を消す方法という記事を参考にしてみてください。