2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SendGridのテンプレート+PHPでメール送信

Last updated at Posted at 2020-02-26

はじめに

SendGridのテンプレートを利用するメールの送信を実装したけど、公式のドキュメントが古くて参考にならないかつ思ったより参考記事が少なかったのでまとめました。

インストール

パッケージをComposerでインストール
https://github.com/sendgrid/sendgrid-php

composer.json
{
    "require": {
          "sendgrid/sendgrid": "~7"
    }
}
$ composer install

テンプレート作成

SendGridのコンソール画面からEmail API>Dynamic Templatesを選択
スクリーンショット 2020-02-20 17.55.17.png

Create a Dynamic Templateで新しいテンプレートを作成
こんな感じで作成されたテンプレートが表示されます
スクリーンショット 2020-02-20 18.02.28.png
赤で囲っているTemplate IDを後でコード内で呼び出します。

Add Versionからメールテンプレート本文を作成していきます。
今回はこんな感じに作成しました。
スクリーンショット 2020-02-20 18.32.42.png
{{}}で囲まれた部分に文字を埋め込むことができます。

テンプレートの詳しい作成方法はこちらを参考にどうぞ
テンプレートを適用して送信する(Dynamic Transactional Template編)

メールを送信する

以上で作成したテンプレートを使ってメールを送信していきます。

$email = new SendGrid\Mail\Mail();
$email->addTo('to_address@mail.com');
$email->setFrom('test@info.test', '送信元表示名');

// SendGridのコンソール上で作成したテンプレートのIDを設定
$email->setTemplateId($template_id);

// メールテンプレートに埋め込む文字列を設定する
$email->addDynamicTemplateData('name', '田中樹'); 
$email->addDynamicTemplateData('url', 'http://hoge.hoge');

// SendGridのAPIキーを設定
$sendgrid = new SendGrid($api_key);

// 送信
$sendgrid->send($email);

これで送信すると、以下のようにメールが届きます。

スクリーンショット 2020-02-20 18.56.20.png

今回は作成していませんが、{{}}で囲めばhtmlで作成したテンプレート内でも文字列の置き換えは反映されました。

手探りの実装になりましたが、もし間違いがありましたらご指摘ください。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?