LoginSignup
2
0

More than 1 year has passed since last update.

[Laravel9 × SES] X-SES-CONFIGURATION-SETヘッダをメールに追加する方法

Posted at

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ヘッダは存在しません

名称未設定ファイル.png
上の図の通り、SESを経由する際にX-SES-CONFIGURATION-SETヘッダは削除されるため、ヘッダが付与されているかを確認するためには、AWS SESに送られる前に確認する必要があります。
その場合には、.envファイルのMAIL_MAILERをlogに変更すれば、SESに送られるメール情報を確認できます。

.env
MAIL_MAILER=log //メールを送信せず、メールの情報をログファイルに格納する

使用方法

SESで追跡用のタグを作成する

タグの作成方法については、わかりやすい記事があったので、こちらを参考にしてください。

LaravelでX-SES-CONFIGURATION-SETを追加

まずは、ヘッダ追加用の関数を追加したクラスを作成します。

php artisan make:mail CustomMailable
app/Mail/CustomMailable.php
<?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ヘッダが追加されたメールが飛びます。

参考資料

2
0
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
0