どうも、こんにちわ。
前回、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のパッケージを使ってメール送信する方法を紹介させていただきました。
調べたらこのパッケージって日本の方が作られたんですね。既に組んであるプログラムとかこのパッケージを使えば改修しなくても、そのまま使えるのでとても便利ですね。こういう有志の方がいると助かりますね。
その方の記事はこちら。
それでは、今回はここまで!また!
[…] https://nori-life.com/laravel-sendgrid-webapi-library/ […]