PHPでSendGridを使ってメールを一斉送信する方法
- 2020年4月17日
- by SendGrid
- Category: 技術ネタ

この記事は How to Send Bulk Emails in PHP using Twilio SendGrid の抄訳です。
イベントの企画には、出席者との頻繁かつ適切なコミュニケーションが求められます。タイムリーに詳細なメッセージを送らないと、出席者は混乱してしまいます。そしてすべてが計画通りに進んでも、イベント開催日が近づいたらゲストへのリマインドメールが必要です。
一斉配信メールは、全員に情報を共有する最適な手段です。
この記事では、Twilio SendGridを使用してPHPで一斉配信を行う方法を紹介します。
foreach文を使ってメールアドレスの配列を解析し、personalizationクラスで宛先リストを作成します。Twilio SendGridでは、一斉配信メールをパーソナライズしたり、個々のメールアドレスに応じてコンテンツを変更することもできます。
必要なツール
このチュートリアルを実施するには、以下のものが必要です。
|
・Twilio SendGridのアカウント ・ComposerがグローバルインストールされたPHPの開発環境 |
Twilio SendGridを使う
まずは、PHPからSendGridを使ってトランザクションメールを送信する方法をご覧ください。上の記事で作成した環境は以下のようにリポジトリをクローンすれば入手できます。本記事はこの続きから説明します。
$ git clone git@github.com:themarcusbattle/php-sendgrid.git $ cd php-sendgrid
一斉送信のコードを作成する
ルートディレクトリで email.php を開き、内容を以下のコードに書き換えてください。
<?php
require 'vendor/autoload.php';
use SendGrid\Mail\Personalization;
use SendGrid\Mail\To;
// Load our `.env` variables
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();
// Declare a new SendGrid Mail object
$email = new \SendGrid\Mail\Mail();
// Define the primary email
$email->setFrom("your@email.com", "Your Name");
$email->setSubject("Group Email to Twilio Subscribers");
$email->addTo("first@recipient.com", "First Recipient");
// Define the additional email addresses
$email_addresses = [
'second@recipient.com',
];
foreach ( $email_addresses as $email_address ) {
$personalization = new Personalization();
$personalization->addTo( new To( $email_address ) );
$email->addPersonalization( $personalization );
}
$email->addContent("text/plain", "Sending bulk emails is easy with SendGrid");
$email->addContent("text/html", "Sending bulk emails is easy with SendGrid");
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
$response = $sendgrid->send($email);
print $response->statusCode() . "\n";
print_r($response->headers());
print $response->body() . "\n";
echo "email sent!\n";
} catch (Exception $e) {
echo 'Caught exception: '. $e->getMessage() ."\n";
}
Personalizationクラスは、Mailオブジェクトにpersonalizations配列を追加することで動作します。1つめの宛先が、新規作成された$emailオブジェクトに割り当てられていることにお気づきでしょうか。追加された宛先は、それぞれ$email_addressesの配列で定義されます。
SendGrid Mailオブジェクトは宛先を1つしか受け付けないので、Personalizationクラスを使用して宛先を追加しましょう。foreachループで$email_addressesを反復処理させます。その処理の中で新しいPersonalizationオブジェクトをインスタンス化し、addToメソッドで宛先を指定します。各Personalizationが親のメールオブジェクト$emailに追加されると、メールを1通送信する場合と同じロジックですべての宛先にメールを送信することができます。
テストする
ルートディレクトリから次のコマンドを実行しましょう: php email.php
正常に実行できれば、コンソールにemails sent!と表示されます。


まとめ
Twilio SendGridを使えば簡単に一斉送信を行え、受信者全員に最新の情報を提供できることで高い信頼性を得られます。
送信メールをブラッシュアップする際は、personalizationクラスに注目してくださいね。


