X-SES-CONFIGURATION-SETとは?
X-SES-CONFIGURATION-SETは、Amazon Simple Email Service(SES)の機能の1つで、SESメール送信に関連する構成セットを識別するために使用されるヘッダ
このヘッダを使用することで、メールがユーザーに確認されたかどうかや、メール内のリンクが押下されたかなど、マーケティングに必要な情報を入手することができます。
取得できる情報としては以下の通り
取得できるイベント
- メールの受信
- メールの拒否
- メールの配信
- メールの開封
- メールのクリック
- メールの返信
- メールのBounce
- メールのComplaint
- メールのDelivery Delay
また、取得した情報をDBやログファイルに格納したり、SNSと連携することができます。
出力先
- CloudWatch
- Amazon SNS
- Firehose
注意すべき点
X-SES-CONFIGURATION-SETヘッダを追加してメールを送信する場合、SES上でX-SES-CONFIGURATION-SETは削除されるため、送信されたメールにはX-SES-CONFIGURATION-SETヘッダは存在しません
上の図の通り、SESを経由する際にX-SES-CONFIGURATION-SETヘッダは削除されるため、ヘッダが付与されているかを確認するためには、AWS SESに送られる前に確認する必要があります。
その場合には、.envファイルのMAIL_MAILERをlogに変更すれば、SESに送られるメール情報を確認できます。
MAIL_MAILER=log //メールを送信せず、メールの情報をログファイルに格納する
使用方法
SESで追跡用のタグを作成する
タグの作成方法については、わかりやすい記事があったので、こちらを参考にしてください。
LaravelでX-SES-CONFIGURATION-SETを追加
まずは、ヘッダ追加用の関数を追加したクラスを作成します。
php artisan make:mail CustomMailable
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Symfony\Component\Mime\Email;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class CustomMailable extends Mailable
{
use Queueable, SerializesModels;
// SESの追跡用ヘッダー追加
public function addSESHeader()
{
// Laravel9 以降の場合
return $this->withSymfonyMessage(function (Email $message) {
$message->getHeaders()->addTextHeader(
'X-SES-CONFIGURATION-SET', '作成したタグ名'
);
});
// Laravel8 以前の場合
return $this->withSwiftMessage(function ($message) {
$message->getHeaders()->addTextHeader(
'X-SES-CONFIGURATION-SET', '作成したタグ名'
);
});
}
}
次に、送信したいメールのMailクラスを作成し、ヘッダ追加用の関数を加えます。
php artisan make:mail TestMail
<?php
namespace App\Mail\Api;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use App\Mail\CustomMailable; //追加
class TestMail extends CustomMailable //継承元をCustomMailableに変更する
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
}
/**
* Build the message.
*
* @return CustomMailable
*/
public function build()
{
return $this->from(config('mail.from.address'), 'テストメール')
->subject('テストメールです!')
->text('テストメールの本文です')
->addSESHeader(); //追加
}
}
後は、通常のメール送信と同じようにメールを送れば、X-SES-CONFIGURATION-SETヘッダが追加されたメールが飛びます。
参考資料