LoginSignup
0

More than 1 year has passed since last update.

blastengineのメールエラーWebhookで送られるデータについて

Posted at

blastengineはエンジニアフレンドリーなメール送信サービスになります。APIまたはSMTPを使って、簡単にメール送信を行えます。

先日、blastengineではエラーメールに対するWebhook通知に対応しました。この記事では、その使い方(PHP)と実際に受け取れるデータについて解説します。

設定

Webhook設定はblastengineの管理画面で行います。設定の中にあるWebhookをクリックします。

001.jpg

設定は主に2つです。

  • エンドポイントURL
    Webhookを受け取るURLです
  • 通知イベント
    Webhookを受け取るイベントです

エンドポイントURLにはPOSTメソッドで呼ばれます。Content-Typeはapplication/jsonになります。通知イベントは以下の3つが用意されています。

  • ドロップ
    エラー停止リスト内にあるメールアドレス宛に送信しようとした場合のエラーです
  • ハードエラー
    ホストがない、ユーザーがいないといった恒久的なエラーです
  • ソフトエラー
    メールボックスがいっぱいなど一時的なエラーです

注意点

2023年01月現在、Webhookはトランザクションメール(即時配信メール)に対してのみ有効です。バルクメール(一括配信)は未対応です。

データを受け取ってみる

では実際にデータを受け取ってみます。今回はPHPで以下のようなコードを書きました。PHPではContent-Typeがapplication/jsonで送られた場合、 $_POST にデータは入ってこないので注意してください。

<?php
$f = fopen('log.txt', 'a+');
$json = file_get_contents('php://input');
$data = json_decode($json, true);
fwrite($f, json_encode($data));
fwrite($f, "\n");
fclose($f);
http_response_code(200);
echo '';

以下はドロップの例です。 error_message にエラー内容が入ります。

{
	"events": [
		{
			"event": {
				"type": "DROP",
				"datetime": "2023-01-26T16:17:54+09:00",
				"detail": {
					"mailaddress": "user@drop.example.com",
					"subject": "Test subject",
					"error_code": "554(errors)",
					"error_message": "エラー停止リストに含まれる宛先であるため、配信がドロップされました",
					"delivery_id": 1128
				}
			}
		}
	]
}

以下はハードエラーの場合です。ホストがない、ユーザーが存在しないなど恒久的に発生する場合のエラーです。

{
	"events": [
		{
			"event": {
				"type": "HARDERROR",
				"datetime": "2023-01-26T16:22:43+09:00",
				"detail": {
					"mailaddress": "user@harderror.example.com",
					"subject": "Test subject",
					"error_code": "550",
					"error_message": "宛先のメールアドレスがありません",
					"delivery_id": 1129
				}
			}
		}
	]
}

まとめ

データが受け取れれば、後はSlackへ通知したり、データベースと連携するなどが容易になります。配信先リストを自動クリーニングするのにも使えるでしょう。

一例としてZapier経由でSlackへ通知するデモをblastengineのwebhook機能でメール送信が失敗したらzapier経由でSlackに通知できるようにした。 - Qiitaにて紹介しています。ご覧ください。

エンジニア向けメール配信システム「ブラストエンジン(blastengine)」

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
0