LaravelでSendGridのLaravelパッケージを使ってWebAPIメール送信する方法

 どうも、こんにちわ。

 前回、LaravelでSendGridのWebAPI(V3)でメール送信する方法を紹介させていただきましたが、今回は公式ではなくコミュニティレベルになりますがLaravel用のパッケージを作っていた方がいたので、それを使ってメール送信する方法を試してみたいと思います。

 なお、Laravelとはなんぞやという方は下の記事を参照してください。

 また、前回の公式PHPライブラリで送信する方法はこちら。

環境

 なお、今回の環境は前回同様下記の通りとなります。

今回の環境

  • AWS EC2(Amazon Linux AMI)
  • Laravel 5.5
  • PHP 7.1.17
  • SendGrid WebAPI V3

 AWSのEC2で運用しているLaravelアプリケーションでLaravelのバージョンは5.5、PHPのバージョンは7.1.17という環境になり、SendGridのWebAPIはバージョン3になります。

APIキーの作成

 SendGridのWebAPIを使用するには、APIキーの作成が必要になります。APIキーの作成方法に関しては前回の記事にて紹介しているので、そちらをご参照ください。

Laravelパッケージを使って送信してみる

 では、早速Laravelパッケージをインストールしていきましょう。基本的にはGithubの手順にしたがってやっていけば大丈夫です。

composer.jsonの編集

 まず、パッケージをインストールするためにcomposer.jsonのrequireの箇所に下記の通りコードを追記します。

{
  "require": {
    "s-ichikawa/laravel-sendgrid-driver": "~2.0"
  }
}

composerのアップデート

 追記したらcomposerをアップデートします。

composer update

ProviderにClassを追加する

 Composerをアップデートしてインストールしたら、「config/app.php」の「providers」に下記のコードを追加します。

'providers' => [
    Sichikawa\LaravelSendgridDriver\SendgridTransportServiceProvider::class
];

.envを編集する

 続いて、.envファイルに「MAIL_DRIVER」と「SENDGRID_API_KEY」、ついでに「MAIL_FROM_NAME」と「MAIL_FROM_ADDRESS」を追記します。

MAIL_DRIVER=sendgrid
SENDGRID_API_KEY='SendGridで作成したAPIキー'
MAIL_FROM_NAME=送信元名
MAIL_FROM_ADDRESS=送信元メールアドレス

サードパーティにSendGridを追加

 次に、「config/services.php」に下記のコードを追記してSendGridをサードパーティとして追加します。

'sendgrid' => [
   'api_key' => env('SENDGRID_API_KEY'),
],

 これで設定完了になります。あとはLaravelの記法にしたがってメールを送信することができます。

Mailableで送信する

 では、試しにここではシンプルなメールをMailableを使って送信してみたいと思います。

 まずは、artisanコマンドでMailableクラスを生成します。クラス名はここではひとまず「TestMail」という名称にします。

php artisan make:mail TestMail

 これで「app/Mail」にTestMail.phpというファイルが生成されていると思います。

メール送信用のViewを用意する

 Mailableクラスを作成したらメール送信用のテンプレートを作成します。

 「resources/views/emails/」ディレクトリに「test.blade.php」を作成し、適当に「テスト送信」などと記述します。

MailableクラスにViewを紐づける

 テンプレートを作成したら、先ほど生成したTestMailクラスにViewファイルを紐づけます。

view('emails.test');
    }
}

メールを送信する

ここまできたら、あとは送るだけです。

使用したいControllerの中に生成したMailableクラス(TestMailクラス)をUseで宣言します。

use App\Mail\TestMail;

 最後に、使用したい処理の箇所で下記のコードのように送信すれば送れると思います。

Mail::to('example@example.com')->send(new TestMail());

 データを持たせることももちろん可能なので、その場合は引数に指定してあげればいいだけです。

まとめ

 ということで、今回はSendGridのLaravelのパッケージを使ってメール送信する方法を紹介させていただきました。

 調べたらこのパッケージって日本の方が作られたんですね。既に組んであるプログラムとかこのパッケージを使えば改修しなくても、そのまま使えるのでとても便利ですね。こういう有志の方がいると助かりますね。

 その方の記事はこちら

 それでは、今回はここまで!また!

お仕事のご相談・ご依頼
お気軽にお問い合わせください!

お仕事の依頼はこちら

著者プロフィール

Taka

東京、奄美大島を拠点にサーフィンとスノーボードが好きなフリーランスのWebクリエイターです。普段はプログラム書いたりデザインしたり映像作ったりしています。いろいろな人の話しを聞くのが好きなので、このブログを通して多くの人と繋がりが出来たら嬉しいです。noteとInstagramもやっているのでフォローしてくれたらありがたいです!

人気記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です