メニュー
Amazon Simple Email Service
開発者ガイド

Amazon SES の Amazon SNS 通知のコンテンツ

バウンス、苦情、および配信の通知は JavaScript Object Notation (JSON) 形式で Amazon Simple Notification Service (Amazon SNS) トピックに発行されます。トップレベル JSON オブジェクトには、notificationType 文字列と mail オブジェクトに加え、bounce オブジェクト、complaint オブジェクト、または delivery オブジェクトのいずれかが含まれます。

オブジェクトのタイプごとの詳細については以下のセクションを参照してください。

以下は、Amazon SES の Amazon SNS 通知のコンテンツに関する重要事項です。

  • 受け取る通知のタイプにより、複数の受信者に対応する 1 つの Amazon SNS 通知を受け取ることも、各受信者に 1 つの Amazon SNS 通知を受け取ることもあります。コードでは Amazon SNS 通知を解析して、どちらの場合にも対応できるようにする必要があります。Amazon SNS で送信された通知に関しては、Amazon SES では順序付けや一括処理が保証されません。ただし、タイプの異なる Amazon SNS 通知 (バウンスと苦情など) が 1 つの通知にまとめられることは決してありません。

  • 1 人の受信者に対して複数のタイプの Amazon SNS 通知を受け取ることがあります。たとえば、受信メールサーバーは、E メールを受理した場合でも (配信の通知をトリガーします)、そのメールの処理後に、そのメールは実際にはバウンスであると判定する場合があります (バウンスの通知をトリガーします)。ただし、通知のタイプが異なるため、これらは常に個別に通知されます。

  • Amazon SES には、通知にフィールドを追加する権限があります。そのため、これらの通知を解析するアプリケーションには、不明なフィールドを処理できるだけの十分な柔軟性が必要です。

  • Amazon SES では、E メールの送信時にメッセージのヘッダーを上書きします。mail オブジェクトの headers および commonHeaders フィールドから元のメッセージのヘッダーを取得できます。

トップレベル JSON オブジェクト

Amazon SES 通知のトップレベル JSON オブジェクトには、以下のフィールドが含まれています。

フィールド名 説明

notificationType

通知のタイプを格納する文字列は、JSON オブジェクトによって表されます。想定される値は、BounceComplaint、および Delivery です。

mail

通知に関連する元のメールについての情報を含む JSON オブジェクト。詳細については、「Mail オブジェクト」を参照してください。

bounce

このフィールドは notificationTypeBounce である場合のみ存在し、バウンスに関する情報を持つ JSON オブジェクトが含まれます。詳細については、「Bounce オブジェクト」を参照してください。

complaint

このフィールドは notificationTypeComplaint である場合のみ存在し、苦情に関する情報を持つ JSON オブジェクトが含まれます。詳細については、「苦情のオブジェクト」を参照してください。

delivery

このフィールドは notificationTypeDelivery である場合のみ存在し、配信に関する情報を持つ JSON オブジェクトが含まれます。詳細については、「Delivery オブジェクト」を参照してください。

Mail オブジェクト

バウンス、苦情、または配信の通知にはそれぞれ、mail オブジェクト内の元の E メールについての情報が含まれます。mail オブジェクトについての情報を含む JSON オブジェクトには次のフィールドが含まれます。

フィールド名 説明

timestamp

元のメッセージが送信された日時 (ISO 8601 形式)。

messageId

Amazon SES がメッセージに割り当てる固有 ID。メッセージを送信すると、この値が Amazon SES から返されます。

注記

このメッセージ ID は Amazon SES によって割り当てられます。元の E メールのメッセージ ID は、mail オブジェクトの headers および commonHeaders フィールドにあります。

source

元のメッセージが送信された E メールアドレス (エンベロープ MAIL FROM アドレス)。

sourceArn

E メールの送信に使用されたアイデンティティの Amazon リソースネーム (ARN)。送信承認の場合、sourceArn は、代理送信者が E メールの送信に使用することをアイデンティティ所有者により承認されたアイデンティティの ARN です。送信承認の詳細については、「送信承認の使用」を参照してください。

sourceIp

Amazon SES にリクエストを送信する E メールを実行するクライアントの送信側パブリック IP アドレス。

sendingAccountId

E メールの送信に使用されたアカウントの AWS アカウント ID。送信承認の場合、sendingAccountId は代理送信者のアカウント ID です。

destination

元のメールの受信者の E メールアドレスのリスト。

headersTruncated

(通知設定に元の E メールのヘッダーが含まれている場合にのみ表示。)通知でヘッダーが切り捨てられたかどうかを示す文字列。切り捨ては、ヘッダーが 10 KB を超える場合に発生します。指定できる値は true および false です。

headers

(通知設定に元の E メールのヘッダーが含まれている場合にのみ表示。)E メールの元のヘッダーの一覧。リスト内の各ヘッダーには、name フィールドと value フィールドがあります。

注記

headers フィールドのメッセージ ID は、Amazon SES に渡した元のメッセージからのものです。その後 Amazon SES によってメッセージに割り当てられたメッセージ ID は、mail オブジェクトの messageId フィールドにあります。

commonHeaders

(通知設定に元の E メールのヘッダーが含まれている場合にのみ表示。)よく使用される E メールの元のヘッダーの一覧。リスト内の各ヘッダーには、name フィールドと value フィールドがあります。

注記

commonHeaders フィールドのメッセージ ID は、Amazon SES に渡した元のメッセージからのものです。その後 Amazon SES によってメッセージに割り当てられたメッセージ ID は、mail オブジェクトの messageId フィールドにあります。

以下は、元の E メールヘッダーを含む mail オブジェクトの例です。この通知タイプが元の E メールヘッダーを含めるように設定されていない場合は、mail オブジェクトに headersTruncatedheaders および commonHeaders フィールドが含まれません。

{ "timestamp":"2016-01-27T14:05:45 +0000", "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000", "source":"john@example.com", "sourceArn": "arn:aws:ses:us-west-2:888888888888:identity/example.com", "sourceIp": "127.0.3.0", "sendingAccountId":"123456789012", "destination":[ "jane@example.com" ], "headersTruncated":false, "headers":[ { "name":"From", "value":"\"John Doe\" <john@example.com>" }, { "name":"To", "value":"\"Jane Doe\" <jane@example.com>" }, { "name":"Message-ID", "value":"custom-message-ID" }, { "name":"Subject", "value":"Hello" }, { "name":"Content-Type", "value":"text/plain; charset=\"UTF-8\"" }, { "name":"Content-Transfer-Encoding", "value":"base64" }, { "name":"Date", "value":"Wed, 27 Jan 2016 14:05:45 +0000" } ], "commonHeaders":{ "from":[ "John Doe <john@example.com>" ], "date":"Wed, 27 Jan 2016 14:05:45 +0000", "to":[ "Jane Doe <jane@example.com>" ], "messageId":" custom-message-ID", "subject":"Hello" } }

Bounce オブジェクト

バウンスに関する情報を含む JSON オブジェクトには常に以下のフィールドが含まれます。

フィールド名 説明

bounceType

バウンスのタイプ。Amazon SES によって決定されます。詳細については、「バウンスのタイプ」を参照してください。

bounceSubType

バウンスのサブタイプ。Amazon SES によって決定されます。詳細については、「バウンスのタイプ」を参照してください。

bouncedRecipients

バウンスとなった元のメールの受信者についての情報を含むリスト。詳細については、「バウンスとなった受信者」を参照してください。

timestamp

バウンスが送信された日時 (ISO 8601 形式)。この時刻は、ISP から通知が送信された時刻であり、Amazon SES で通知を受け取った時刻ではないことに注意してください。

feedbackId

バウンスの一意の ID。

Amazon SES がリモートの Message Transfer Authority (MTA) に接続できた場合は、次のフィールドも表示されます。

フィールド名 説明

remoteMtaIp

Amazon SES で E メールの配信を試みた先の MTA の IP アドレス。

Delivery Status Notification (DSN) がバウンスにアタッチされている場合、以下のフィールドも表示されることがあります。

フィールド名 説明

reportingMTA

DSN の Reporting-MTA フィールドの値。これは、DSN に記述された配信、リレー、またはゲートウェイのオペレーションを試みた MTA の値です。

以下は、bounce オブジェクトの例です。

{ "bounceType":"Permanent", "bounceSubType": "General", "bouncedRecipients":[ { "status":"5.0.0", "action":"failed", "diagnosticCode":"smtp; 550 user unknown", "emailAddress":"recipient1@example.com" }, { "status":"4.0.0", "action":"delayed", "emailAddress":"recipient2@example.com" } ], "reportingMTA": "example.com", "timestamp":"2012-05-25T14:59:38.605Z", "feedbackId":"000001378603176d-5a4b5ad9-6f30-4198-a8c3-b1eb0c270a1d-000000", "remoteMtaIp":"127.0.2.0" }

バウンスとなった受信者

バウンスの通知には、1 人の受信者が関するものと複数の受信者に関するものがあります。bouncedRecipients フィールドにはオブジェクトのリストが含まれ (バウンスの通知が関係する受信者ごとに 1 つのオブジェクト)、常に以下のフィールドが含まれています。

フィールド名 説明

emailAddress

受信者の E メールアドレス。DSN が利用できる場合、これが DSN の Final-Recipient フィールドの値です。

オプションで、DSN がバウンスにアタッチされている場合、以下のフィールドも表示される場合があります。

フィールド名 説明

action

DSN の Action フィールドの値。このフィールドには、Reporting-MTA により実行された、この受信者に対してメッセージを送信しようとした結果のアクションが示されます。

status

DSN の Status フィールドの値。これは、メッセージの配信状態を示す、受信者ごとに個別の、トランスポート独立型ステータスコードです。

diagnosticCode

ステータスコードは、Reporting-MTA により発行されます。これは、DSN の Diagnostic-Code フィールドの値です。このフィールドは DSN により存在しない場合があります (その場合 JSON オブジェクトにも表示されません)。

以下は、bouncedRecipients のリストに示されるオブジェクトの例です。

{ "emailAddress": "recipient@example.com", "action": "failed", "status": "5.0.0", "diagnosticCode": "X-Postfix; unknown user" }

バウンスのタイプ

以下のバウンスのタイプがあります。Permanent とマークされたバウンスが返された E メールアドレスは、今後も送信が正常に完了することはないと考えられるため、メーリングリストから削除することをお勧めします。Transient バウンスは、再試行の上限に達し、これ以上再試行が行われない場合に送信されます。最初に Transient バウンスとして返されたアドレスに再送信すると、正常に完了する場合があります。

注記

Amazon SES は、Amazon SES が今後再試行しないハードバウンスとソフトバウンスのみを報告します。つまり、E メールメッセージは受信者に届いておらず、Amazon SES によるメールメッセージの再送信も行われません。

bounceType bounceSubType 説明

Undetermined

Undetermined

Amazon SES はバウンスの理由を特定できませんでした。

Permanent

General

Amazon SES は、一般的なハードバウンスを受け取りました。この受信者のメールアドレスをメーリングリストから削除することをお勧めします。

Permanent

NoEmail

Amazon SES は、送信先の E メールアドレスが存在しないことが原因である永続的なハードバウンスを受け取りました。この受信者をメーリングリストから削除することをお勧めします。

Permanent

Suppressed

Amazon SES は、このアドレスへの送信を抑制しました。無効なアドレスとして最近バウンスとなった履歴があるためです。サプレッションリストからメールアドレスを削除する方法については、「Amazon SES サプレッションリストからの E メールアドレスの削除」を参照してください。

Transient

General

Amazon SES は、一般的なバウンスを受け取りました。今後、この受信者に再送信を行うと、正常に完了する場合があります。

Transient

MailboxFull

Amazon SES は、メールボックスが一杯であることを示すバウンスを受け取りました。今後、この受信者に再送信を行うと、正常に完了する場合があります。

Transient

MessageTooLarge

Amazon SES は、メッセージサイズが大きすぎることを示すバウンスを受け取りました。メッセージサイズを減らすことで、この受信者への再送信が正常に完了する場合があります。

Transient

ContentRejected

Amazon SES は、コンテンツが却下されたことを示すバウンスを受け取りました。メッセージのコンテンツを変更することで、この受信者への再送信が正常に完了する場合があります。

Transient

AttachmentRejected

Amazon SES は、添付ファイルが拒否されたことを示すバウンスを受け取りました。添付ファイルを削除または変更することで、この受信者への再送信が正常に完了する場合があります。

苦情のオブジェクト

苦情に関する情報を含む JSON オブジェクトには以下のフィールドが含まれます。

フィールド名 説明

complainedRecipients

苦情の原因である可能性がある受信者についての情報を含むリスト。詳細については、「苦情を申告した受信者」を参照してください。

timestamp

苦情が送信された日時 (ISO 8601 形式)。この時刻は、ISP から通知が送信された時刻であり、Amazon SES で通知を受け取った時刻ではないことに注意してください。

feedbackId

苦情の一意の ID。

また、フィードバックレポートが苦情にアタッチされている場合、以下のフィールドが示される場合があります。

フィールド名 説明

userAgent

フィードバックレポートの User-Agent フィールドの値。これは、レポートを生成したシステムの名前とバージョンを示します。

complaintFeedbackType

ISP から受け取ったフィードバックレポートの Feedback-Type フィールドの値。これには、フィードバックのタイプが含まれます。

arrivalDate

ISO 8601 形式のフィードバックレポートの Arrival-Date フィールドまたは Received-Date フィールドの値。このフィールドがレポートにない場合もあります (その場合、JSON オブジェクトにも表示されません)。

以下は、complaint オブジェクトの例です。

{ "userAgent":"AnyCompany Feedback Loop (V0.01)", "complainedRecipients":[ { "emailAddress":"recipient1@example.com" } ], "complaintFeedbackType":"abuse", "arrivalDate":"2009-12-03T04:24:21.000-05:00", "timestamp":"2012-05-25T14:59:38.623Z", "feedbackId":"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000" }

苦情を申告した受信者

complainedRecipients フィールドには、苦情の送信元と思われる受信者のリストが含まれます。

重要

ほとんどの ISP は、苦情の通知に基づいて苦情を送信した受信者の E メールアドレスを編集するため、このリストは、元のメッセージの受信者と苦情を送信した ISP に基づいて想定される苦情送信元の受信者に関する情報を示します。Amazon SES では、この受信者のリストを確認するために元のメッセージを参照します。

このリストの JSON オブジェクトには以下のフィールドが含まれます。

フィールド名 説明

emailAddress

受信者の E メールアドレス。

以下は、苦情を申告した受信者のオブジェクトの例です。

{ "emailAddress": "recipient1@example.com" }

注記

受信者 1 人につき 1 つのメッセージが送信されるように制限している (BCC 行に 30 個の異なる E メールアドレスを指定して送信するのではなく) 場合は、この動作を利用して、メッセージに関する苦情を伝えている E メールアドレスをより確実に特定することできます。

苦情のタイプ

complaintFeedbackType フィールドには以下の苦情のタイプが示されます (Internet Assigned Numbers Authority ウェブサイト に基づいて、報告する ISP により割り当てられます)。

  • abuse - 未承諾 E メールまたはある種の迷惑 E メール。

  • auth-failure - E メールの認証失敗を示します。

  • fraud - ある種の詐欺やフィッシング行為。

  • not-spam - 報告者がこのメッセージはスパムではないと判断しました。このタイプは、誤ってスパムとしてタグ付けまたは分類されたメッセージを修正するために使用される場合があります。

  • other - その他の登録されたタイプに該当しないフィードバックです。

  • virus - 元のメッセージにウイルスが見つかったことを示します。

Delivery オブジェクト

配信に関する情報を含む JSON オブジェクトには常に以下のフィールドが含まれます。

フィールド名 説明

timestamp

Amazon SES が E メールを受信者のメールサーバーに配信した時間 (ISO8601 形式)。

processingTimeMillis

Amazon SES で送信者からのリクエストを受理したときから受信者のメールサーバーにそのメッセージが渡されたときまでの時間 (ミリ秒単位)。

recipients

配信の通知を適用する E メールの対象となる受信者のリスト。

smtpResponse

Amazon SES から E メールを受け取ったリモート ISP からの SMTP 応答メッセージ。このメッセージは、E メール、受信メールサーバー、または受信する ISP によって異なります。

reportingMTA

メールを送信する Amazon SES メールサーバーのホスト名。

remoteMtaIp

Amazon SES が E メールを配信した先の MTA の IP アドレス。

以下は、delivery オブジェクトの例です。

{ "timestamp":"2014-05-28T22:41:01.184Z", "processingTimeMillis":546, "recipients":["success@simulator.amazonses.com"], "smtpResponse":"250 ok: Message 64111812 accepted", "reportingMTA":"a8-70.smtp-out.amazonses.com", "remoteMtaIp":"127.0.2.0" }