• sendgridを使ってメールを送る方法【具体的に解説】

    Djangoでウェブサイトを開発していく中で、メールの送信機能を実装したい場合もあるかと思います。

    そこで今回は、sendgridというサービスを使ってメールを送る方法をお伝えしていきます。

    sendgridのサイトでユーザー登録

    まずはsendgridのサイトにいき、ユーザー登録をしましょう。

    日本の場合は構造計画研究所という会社が代理店をしているようですが、ログインをすると結局英語のサイトが表示されてしまいます。

    また、構造計画研究所経由で登録をすると、アカウントの作成まで数日の時間がかかってしまいます。

    ですので、すぐに使いたい方は英語のサイトから直接アカウント登録をしてもよいかもしれません。

    日本語版のsendgridサイトはこちら

    英語版のsendgridサイトはこちら

    今回は、英語のサイトで登録を進めていきます。

    サイトに入ったら、右上の「START FOR FREE」というボタンをクリックしてください。

    sendgridのトップページ

    すると、以下のような画面が出ますので、「Free」をクリックした上で右下の「Try for Free」というボタンを押してください。

    sendgridのコースの登録

    すると以下のような画面が出ますので、ユーザー名、メールアドレス、パスワードを入力して「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の表示

    via sendgrid.netという書かれています。

    このメールの送信者はexample.comというドメインですが、メールはsendgridのメールサーバーが使われていますので、このような表示が出てしまったのです。

    これだと、受信した人によっては少し怪しいと思うかもしれません。

    しかし、sendgridでは、設定をすることがこのvia sendgrid.netを消すことができます。

    その方法については、sendgridでメールを送った時、送信アドレス横のサーバー情報を消す方法という記事を参考にしてみてください。

    ~Django無料講義~のご案内

    Code for Djangoが、4時間超の無料Django講義をはじめました

    •  ・本を出版したCode for Djangoの
       製作者が作ったサイトです。
    •  ・Code for Djangoの内容も、
       動画で詳しく解説しています。
    •  ・動画は順次ふやしていきますので、
       ただで学び続けることが可能です。
    •  ・Djangoの効率的なスキルアップに、
       是非お役立て下さい。