連携サービス・ツール活用

Laravel+SendGridでメールを送信するためのSendGrid側の設定方法

朝活英語のアイキャッチ

企業のWEB技術パートナーとして、システム開発やインフラ構築を支援しているTEDASKのToshi Seitoです。

Webサービスやアプリを運用する際、「会員登録の認証メール」や「決済完了の通知メール」がスパム扱いされず、確実にユーザーへ届くかどうかは、サービスの信頼性を左右する死活問題です。

弊社では、Laravelなどを用いたWebシステムを開発する際、高いメール到達率と開発のしやすさを兼ね備えた配信サービス「SendGrid」の導入を標準的におすすめしています。

本記事では、LaravelアプリケーションからSendGridを経由してメールを送信するための、SendGrid側の初期設定と運用上のポイント(SMTPとAPIの使い分けや、トラッキングの停止など)を技術者の視点で解説します。

SendGridとは

SendGridとはメール配信サービスです。

主にメールマガジンやWeb上から送信されるメールにSendGridを利用する事で、より確実にメールが届けられるように仕組み化されているサービスです。

SendGridは無料プランがあり月に12,000通*までが無料で利用出来るため、小規模事業で利用する分には無料でまかなえる場合が多く、非常に使い勝手の良いメール送信サービスです。

また開発用に公式のライブラリーも公開されており、多くの言語に対応しているため開発する上でもハードルを低くしてくれているのも嬉しい点です。

*日本代理店から契約した場合の2024年1月21日時点での情報です。

日本代理店サイト:https://sendgrid.kke.co.jp/

SendGrid公式サイト:https://app.sendgrid.com/

SendGridの日本版と海外版の違い

SendGridで検索すると「構造計画研究所」という日本の代理店が出てきます。

検索結果のもう少し下を見てみると海外の公式サイトが出てきます。

前述したとおり、構造計画研究所は日本の代理店ですので、こちらから契約しても公式サイトの英語サイトから契約しても管理画面や機能はまったく同じになります。

ただ、日本の代理店の場合は法人契約が必須ですので、もし個人事業の場合は英語の公式サイトからの登録が必要になりますので、その点が大きな違いと言えるかと思います。

また送信制限では、日本代理店を通した場合は無料プランで12,000通と書きましたが、公式サイトで登録した場合は1日100通までと送信数がかなり抑えられています。

送信者情報の登録

早速ですが、SendGridの登録から送信するためのAPI取得までの説明をしていきたいと思います。

登録作業については一般的な登録方法と変わりませんので、詳細は省かせていただきます。

SendGridの送信者情報の登録

SendGridの管理画面にログインしたら、最初に「Create identity」ボタンをクリックして、送信者情報の登録を行います。

SendGridではメールの送信者情報の登録を義務づけいて、事業者名、住所、電話番号の登録が必須ですので正しく情報を登録しましょう。

以下のリンクは公式サイトの説明です。いわゆるスパム防止対策のひとつで、不正利用防止のために登録が必要となっています。

Senders | SendGrid Docs | Twilio
Understand email sender identification and how to manage the sender of your email campaign with Twilio SendGrid.
SendGridの送信者情報の登録

英語サイトですので、英語で入力しましょう。

この中で「From Email Address」とありますが、これは事業で利用しているメールアドレスを入力しましょう。

例えば私の場合はtedask.jpのメールアドレスがあるのでそのドメインでメールアドレスを設定します。

Webアプリ用にこれからメールアドレスを設定する場合はそれは別に作るので、ここはあくまで連絡用のメールアドレスを設定しましょう。

SendGridの送信者情報の登録

登録が完了すると、確認用のメールが届くのでリンクをクリックして、VerifiedとなればOKです。

Domain Authenticationの設定

次にWebアプリ用に使う独自ドメインをSendGridで使うための設定をしていきます。

SendGridで独自ドメインの設定

左メニューの「Settings」の中の「Sender Authentication」をクリックします。

SendGridで使う独自ドメインの設定

「Authenticate Your Domain」をクリックします。(画像ではすでに一つドメインが登録されていますが、初めての場合は何もないはずです。)

SendGridで使う独自ドメインの設定

DNS hostについて聞かれますが、日本のホスティングサービスは表示されませんので、「Other Host(Not Listed)」を選択して、次の項目も空のままで「Next」をクリックします。

SendGridで使う独自ドメインの設定

「From Domain」に今回利用するアプリ用のドメインを入力して「Next」をクリックします。

SendGridで使う独自ドメインの設定

そうすると、DNSの設定情報が表示されるので、独自ドメインのネームサーバーが設定されいるホスティングサービスでSendGrid用のサブドメインの設定を行います。(DNSの設定については省略します。)

サーバーでの設定が完了したら、「I’ve added these records.」にチェックを入れて「Verify」をクリックします。

SendGridで使う独自ドメインの設定

「It worked!」となればOKです。

「Sender Authentication」の画面で、「Status」がVerifiedになっているはずです。

SMTP送信とWEBアプリ送信の違い

次に、Laravelでメールを送信するための設定を行いますが、SendGridでは2種類のメールの送信方法があります。

SendGridのメールの送信方法

私のLaravelの場合の使い分けとしては

Web API:お知らせメールやアプリ内でメール送信が必要な場合(SendGridのライブラリーのメソッドで送信する場合)

SMTP Relay:LaravelのAuth機能を使ってユーザー登録時にメールを送信する場合(Laravel本体から送信する場合)

としています。

SMTP Relayを設定するとSMTPのパスワード用にAPI Keyが発行されるので、基本的にSMTP Relayだけ利用すれば良いと思います。

Laravelに独自にユーザー登録機能を作る場合や、そもそも登録機能は不要で、メールを飛ばすだけという場合はWeb APIでAPIだけ発行すればOKです。

SMTP送信用の設定とLaravel .envファイルの編集

では今回はSMTP経由でメールを送信する場合の設定をしていきます。

SendGridでSMTPでメールする場合の設定

左メニューの「Email API」の中の「Integration Guide」をクリックします。

SendGridでSMTPでメールする場合の設定

「SMTP Relay」を選択します。

SendGridでSMTPでメールする場合の設定

「Create an API key」でアプリ名を入力して、「Create Key」をクリックします。

SendGridでSMTPでメールする場合の設定

するとAPIキーが作成されます。

この情報を元にLaravelの環境設定ファイル「.env」を編集していきます。

MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=465
MAIL_USERNAME=apikey
MAIL_PASSWORD=【生成されたapi】
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=【アプリから送信するメールアドレス】
MAIL_FROM_NAME="${APP_NAME}"

SENDGRID_API_KEY=【生成されたapi】
SENDGRID_FROM=【アプリから送信するメールアドレス】
SENDGRID_FROM_NAME="${APP_NAME}"

MAIL_から始まる変数はユーザー登録時に送信されるメールでSMTPの設定です。

SENDGRID_から始まる変数は、ユーザー登録以外で通知関係などSendGridのライブラリーから送信する場合の設定です。APIキーについては、SMTPと同じものを利用して問題ありません。

SendGridでSMTPでメールする場合の設定

この設定が終わったらAuthenticationと同様に、接続確認をして確認がとれれば無事送信が出来るようになっているはずです。

公式サイトに詳しい説明もありますので、参考にしてみて下さい。
https://sendgrid.kke.co.jp/blog/?p=12760&gad_source=1

トラッキング機能の停止

SendGridは送信するメールにリンクがある場合、デフォルトでトラッキング機能が有効になっているたSendGrid用のURLに書き換えが行われます。

HTMLメールでリンクをボタンにしている場合は特に気になりませんが、プレーンテキストで送信している場合などはURLパラメータにより長くなって見苦しくなってしまいますので、必要でなければ停めてしまいましょう。

SendGridのトラッキング機能の停止

左メニューの「Settings」の中の「Tracking」をクリックします。

SendGridのトラッキング機能の停止

「Open Tracking」と「Click Tracking」が有効になっているのが分かります。

これを編集から停止にします。

SendGridのトラッキング機能の停止

SendGridのトラッキング機能の停止

SendGridのトラッキング機能の停止

全てDisabledになればOKです。

送られているメールのリンクが、独自ドメインのURLになっているはずです。

まとめ

今回は、SendGridを初めて利用する方に向けてSendGridから送信するまでの流れを書いてみました。

管理画面が英語なので少し分かりにくい部分があるのですが、やることが分かっていれば簡単ですね。

今回は基本的なSendGridの機能だけしか取り上げていませんが、SMS送信などもあるようなので、もう少し詳しい機能もいずれ紹介できたらと思います。

もしSendGridの使い方などで分からない点などありましたら、お気軽にご相談ください。

以上、「Laravel+SendGridでメールを送信するためのSendGrid側の設定方法」でした!

「システムからメールが届かない…」「Laravel開発の壁にぶつかっている」
Webアプリ開発からインフラ構築まで、技術パートナーにお任せを

本記事で解説したSendGridの連携やDNS設定はもちろん、Laravelを用いたセキュアなWebサービス開発・既存システムの改修には、バックエンドからインフラまでの幅広い専門知識が必要です。

  • SendGridの設定をしたが、どうしてもメールが迷惑メールに入ってしまう
  • Laravelでの「会員制サイト」や「独自WEBサービス」の開発を外注・協業したい
  • 開発途中でエンジニアがいなくなり、プロジェクトがストップして困っている

TEDASKでは、表側のデザイン実装から、Laravelによる複雑なバックエンド開発、強固なサーバー構築までを一気通貫で担う「社外CTO(技術パートナー)」として企業様をサポートしております。

この記事を書いた人
Toshi Seito

TEDASK代表
WordPressに関する相談実績のべ600件以上!WordPressの高度なカスタマイズから、海外製の高機能WordPressテーマの導入支援、LaravelによるWEBサービス制作はお任せ下さい。

Toshi Seitoをフォローする