Laravel8でsendgridのDynamicTemplateを利用してみる
あまり書かれてなさそうだったので、さくっと調べて書いてみます。
準備
まずはsendgridの方でAPIキーの作成とTemplateの作成をしてください。
作成方法は他のかたも書かれているので、割愛。
こちらから作成可能:https://app.sendgrid.com/settings/api_keys
ぽちぽちするだけで十分だと思います。
Templateも直感的に作成できるので、さくっと作っちゃってください。
APIキーは.envに書いておくと良いと思います。
.env
SENDGRID_API_KEY=api_key.xxxxxxxxxxxxxxxxxxxxxxxxx
パッケージインストール
composer require sendgrid/sendgrid
PHPでの実装方法
すごく簡単に送れます。envからAPIKeyを取得して、jsonを作って、postするだけ!
$apiKey = getenv('SENDGRID_API_KEY');
$sg = new \SendGrid($apiKey);
$request_body = json_decode('{
"from": {
"email": "送信元メールアドレス",
"name": "メールアドレスの名前"
},
"personalizations": [
{
"to": [
{
"email": "送信先メールアドレス"
}
],
"dynamic_template_data":{
"data": "埋め込みたい文字列",
"umekomi": "埋め込みたい文字列"
}
}
],
"template_id": "TemplateID_xxxxxxxxxxxxxxxxxxxx"
}');
$response = $sg->client->mail()->send()->post($request_body);
dynamic_template_dataにテンプレートの変数を書きます。
テンプレート側では下記のように埋め込みます。
{{data}}
{{umekomi}}
これだけでDynamicTemplateを使えるので、簡単ですね!
HTMLをsendgrid側で書けるし、さらにViewも充実していてHTMLを書けない人にも作成できます。
すごく便利なので、使ってみてください。
sendgridは無料版もあり、12,000通/月まで無料なので簡単なシステムで導入するのもオススメですよ♪