【技術解説】Laravelでメール送信機能を実装するならSendGridがおすすめ!その理由と導入の手順は?

2021.08.30
フロントエンド開発
鍋山亘
【技術解説】Laravelでメール送信機能を実装するならSendGridがおすすめ!その理由と導入の手順は?
SHARE ON
  • FaceBook
  • Twitter
  • LINE
  • Note

みなさんこんにちは。Wakka Inc.テクニカルマネージャーの鍋山です。

Webアプリケーションを開発していると、ユーザーにメール送信する機能が必要になることがあります。具体的にはログイン登録完了を知らせるときやユーザーからのコンタクトを通知するときなどが挙げられます。

今回はメール送信機能の実装を検討される方に向けて、PHPのLaravelを利用した実装方法についてご紹介します。

Laravelを使用してメール送信機能を実装する場合、SendGridが有名です。SendGrid では、APIキーが用意されており、Laravelの.envファイルにセットして実装すれば、PHPでメール送信機能をWebアプリケーションに追加できるようになります。

それでは、具体的にSendGrid の概要とアカウント登録方法、Laravelを使用して実装するまでの手順を解説していきます。

目次

●開発リソースの不足にお悩みなら●

>>>Wakka.Inc独自の海外子会社設立サービスがおすすめ!
無料でサービス資料をダウンロードできますのでぜひご覧ください。

SendGridとは?

『SendGrid』とは、全世界で利用することができるクラウド型のメール配信サービスです。月間900億通以上のメール送信実績を誇り、多くのユーザーから利用されています。送信ドメイン承認や自動バウンス処理を施しているため、迷惑メールフォルダーに分類される心配がなく、確実にユーザーのメールボックスまで届けられるという点が魅力です。

SendGridでは、APIキーを発行することができます。これにより、Webアプリケーションなどさまざまなサービスで利用することが可能です。また、プログラミング言語に関係なくメール送信機能を実装することができるため、OSへの依存性は少ないでしょう。

SendGridを利用するメリットには、下記のようなものが挙げられます。

  • メールを確実に配信できる
  • メール配信の管理がスマート
  • 低コストで利用できる
  • 分析がしやすい

それぞれのメリットについて詳しく解説しますので、ぜひチェックしてください。

確実にメールの配信が可能

1つ目のメリットは、確実にメールを配信するための仕組みが整っている点です。

メールインフラの経験が豊富なエンジニアを多数抱えており、メール到達性が高くなるように保守を行っています。例えば、ISPモニタリングをして到達状況を確認したり、バウンス自動処理を施し正確性を高めたりしているのです。これにより、せっかく配信したメールが迷惑メールボックスに振り分けられ気づかれないというようなトラブルを回避することができます。

また、「ログイン登録をしたのに完了メールが届かない」、「認証通知が来ない」というような事態になりづらいです。これにより、お問い合わせ処理の負担も減らすことができるでしょう。

配信管理がスマート

2つ目のメリットは、配信管理がスマートな点です。

SendGridは、メールを送信するだけではありません。例えば、配信停止リンクの挿入も代わりに行ってもらうことができます。自身で配信停止用のWebページを作成する必要がないため、非常に便利です。また、サーバーやインフラの追加などは一切不要になります。そのため、管理の負担を大幅に抑えることができるでしょう。

安いコストで運用が可能

コストが安い点も大きな魅力となるでしょう。SendGridは初期費用が無料となっており、初期コストがかかりません。また、1ヶ月12,000通までは無料で利用可能です。そのため、小規模のWebアプリケーションであれば、無料で配信機能を追加できる可能性があります。ちなみに、12,000通を超える場合でも月額1,900円〜となっているため、安いコストで運用することができるでしょう。

到達状況をリアルタイムで確認できる

4つ目のメリットは、リアルタイムで到達状況を確認できることです。

送信したメール1通1通のログが残り、どのようなトラブルが発生したのか確認できます。到達率の低下や配信停止率が高くなったときに原因を追求できるので非常に便利です。

SendGridとAmazon SESの比較

Amazon SESとは、Amazonが提供するクラウドメール送信サービスです。SendGridと同様にプログラムからメールを送信することができます。お互いにできることが似ているため、比較されることが多いです。また、サービスを比較することでSendGridの理解が深まるので、ぜひ参考にしてください。

Suppression Listの違い

Suppression Listとは、簡単に表現すると送信してはいけないメールアドレスの一覧表です。

Amazon SESは、メールが送信できなかった場合、Suppression Listに掲載され、再度送信するとリクエストを受け取ります。そして、再送せずに破棄しバウンスイベントが発生するという流れです。

一方、SendGridは基本的にAmazon SESと同じ流れですが、メールを破棄すると破棄イベントが発生します。バウンスイベントが発生しない点が大きな違いです。また、Amazon SESはリージョン内でSuppression Listを共有しますが、GridSendはそれぞれのアカウントが独立しているため、共有されません。

送信元IPアドレスはどちらも追加オプション

SESの場合、基本的には共有IPアドレスを使用します。しかし、追加オプションを利用すれば、固定IPを使用することも可能です。

一方、SendGridはプランごとに送信元のIPアドレスが異なります。例えば、Freeプランは基本的に共有IPになりますが、Silverプランを契約すれば、固定IPの使用が可能です。

SendGridの登録手順

LaravelのSendGridでメール機能を実装するためには、SendGridのAPIキーを取得しなければなりません。また、APIの取得には会員登録が必要です。そのため、まずはアカウント登録するための手順について解説します。

1.まず、下記のURLからSendGrid公式ページにアクセスします。
https://sendgrid.kke.co.jp

2.トップページの中央にあるメールアドレス入力フォームもしくは、右上にある「無料ではじめる」ボタンから会員登録を行ってください。もし、会員登録済みなら、右上のログインからサインインします。

3.メールアドレスを入力して「新規登録」ボタンをクリックすると確認メール送付画面に遷移します。メールを確認し、メッセージの中央にある「ユーザー情報を登録」のボタンをクリックして、登録情報画面にアクセスしてください。

4.パスワードや氏名、会社名など適切な情報を入力して、最後に登録ボタンをクリックします。

5.登録が完了すると下記のような画面に遷移します。記載があるように、登録内容を確認したあとにログイン情報を知らせてくれるため、少々時間が必要です。

6.次に、APIキーを作成します。審査が完了してログイン情報を受け取ったら、SendGridのホーム画面にアクセスします。

7.サイドメニューから「設定」→「API Keys」を選択してください。

8.画面右上にある「Create API Key」をクリックします。

9.名前などを入力して完了ボタンをクリックするとAPIの取得が可能です。記載されているAPI情報はLaravelを使用して実装する際に必要になりますので、メモをしておきましょう。

SendGridのAPIキーを利用してLaravelで実装する手順

次は、取得したAPIキーを利用してLaravelでメール送信機能を実装していきます。

1.composerを利用してSendGridをインストールしましょう。プロジェクト直下で下記のコマンドを実行してください。
composer require “sendgrid/sendgrid”

2.envファイルで先ほど取得したAPIをセットします。
SENDGRID_API_KEY={※先ほど取得したSendGridのAPIキーを貼り付けてください。}

3.メールを送信する処理を実装します。SendMailsControllerクラスを実装し、送信元メールアドレスや送信先メールアドレスを設定してください。SendGridをインスタンス化する際は、コンストラクタにAPIキーを指定します。APIキーはgetenv関数で先ほど指定したenvファイルから取得することが可能です。

use SendGrid;

class SendMailsController extends Controller
{
public function sendMail()
{

$email = new \SendGrid\Mail\Mail();
$email->setFrom(‘自身のメールアドレスをセットします’);
$email->setSubject(“SendGridテスト”);
$email->addTo(‘送信する相手のメールアドレスを入力します’);
$apiKey = getenv(‘SENDGRID_API_KEY’);
$sendGrid = new \SendGrid($apiKey);
$email->addContent(
“text/plain”,
“メッセージの中身です”
);
$response = $sendGrid->send($email);
if ($response->statusCode() == 202) {
return back()->with([‘success’ => “E-mails successfully sent out!!”]);
}
return back()->withErrors(json_decode($response->body())->errors);
}
}

4.web.phpに下記を記載し、パスを設定します。
Route::get(‘/Mailing’,’SendMailsController@sendMail’)->name(‘Mailing’);

5.下記のURLにアクセスすると、指定先のメールアドレスにメールが送信されます。以上で実装は完了です。
http://localhost/Mailing

Webアプリケーションにメール送信機能を簡単に実装する方法

今回は、SendGridのAPIを利用してLaravelでメール送信機能を実装する手順について解説しました。

Webアプリケーションにメール送信機能を実装する場合、ある程度の知識が必要です。例えば、LaravelやPHPなどに精通していないと実装することは難しいでしょう。自社に経験のあるエンジニアがいない場合や人手不足で機能の実装ができない企業では、なかなか着手できないということもあるでしょう。

そんな時は専任のエンジニアチームの構築ができる、Wakka Inc.のオフショアラボ型開発サービスが便利です。サービスの開発から運用保守まで一気通貫で担当するチームをつくることであなたの会社の成長をサポートします。興味のある方は下記リンクからお問い合わせください。

フルスクラッチのシステム開発のご相談はWakka.incまで

Wakka inc.では、専門性の高いチームがお客様のニーズに寄り添い、フルスクラッチでのオーダーメイド開発はもちろん、業務のIT化・開発リソースの確保など、ビジネスの成功に向けて着実にサポートします。
サポートの概要や費用感など、下記のお問い合わせフォームよりお気軽にご連絡ください。(構想段階で形になっていないアイデアでも問題ありません)

また、ラボ型開発やビジネスに関する豊富な資料も用意しています。お気軽にこちらからダウンロードください。

この記事を書いた人
鍋山亘

日系オンラインリサーチ会社のCTOとしてベトナムチームを立ち上げ、Wakka Inc.のテクニカルマネージャーとして参画。現在はベトナム拠点で開発チームの標準化や社内のインフラ管理・ITプロジェクト統括をやっています。モットーは『みんなで頑張りましょう』

  • ホーム
  • ブログ
  • 【技術解説】Laravelでメール送信機能を実装するならSendGridがおすすめ!その理由と導入の手順は?