Amazon AWS SES / SNS: уведомления о сбросе не включают заголовки - PullRequest
0 голосов
/ 17 февраля 2019

Я использую AWS SES для отправки электронных писем и SNS для уведомлений, когда электронное письмо не доставлено (отказано).

Это сообщение о сбое, которое я получаю, когда электронное письмо не доставлено:

{
  "notificationType"=>"Bounce", 
  "bounce"=>{
    "bounceType"=>"Permanent", 
    "bounceSubType"=>"General", 
    "bouncedRecipients"=>[{
      "emailAddress"=>"something@somethnig.com", 
      "action"=>"failed", "status"=>"5.1.1", "diagnosticCode"=>"smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try\n550-5.1.1 double-checking the recipient's email address for typos or\n550-5.1.1 unnecessary spaces. Learn more at\n550 5.1.1  https://support.google.com/mail/?p=NoSuchUser b9si9302589pgt.293 - gsmtp"
      }], 
      "timestamp"=>"2019-02-17T08:31:24.795Z", 
      "feedbackId"=>"...", 
      "remoteMtaIp"=>"IP", 
      "reportingMTA"=>"dsn; SOMETHING.smtp-out.us-west-2.amazonses.com"}, 
      "mail"=>{"timestamp"=>"2019-02-17T08:31:24.000Z", 
        "source"=>"email@something.com", 
        "sourceArn"=>"AWS source", 
        "sourceIp"=>"IP", 
        "sendingAccountId"=>"ID #", 
        "messageId"=>"msg ID", 
        "destination"=>["email@adress.com"]
      }
}

Поскольку у меня есть приложение, в котором несколько пользователей отправляют много электронных писем в день, мне нужно было определить, какое электронное письмо не удалось - объект выше не предоставляет эту информацию.Поэтому я посмотрел документацию AWS SES и нашел там следующий ответ отказового объекта:

   {
       "notificationType":"Bounce",
       "bounce":{
          "bounceType":"Permanent",
          "reportingMTA":"dns; email.example.com",
          "bouncedRecipients":[
             {
                "emailAddress":"jane@example.com",
                "status":"5.1.1",
                "action":"failed",
                "diagnosticCode":"smtp; 550 5.1.1 <jane@example.com>... User"
             }
          ],
          "bounceSubType":"General",
          "timestamp":"2016-01-27T14:59:38.237Z",
          "feedbackId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa068a-000000",
          "remoteMtaIp":"127.0.2.0"
       },
       "mail":{
          "timestamp":"2016-01-27T14:59:38.237Z",
          "source":"john@example.com",
          "sourceArn": "arn:aws:ses:us-west-2:888888888888:identity/example.com",
          "sourceIp": "127.0.3.0",
          "sendingAccountId":"123456789012",
          "messageId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa0680-000000",
          "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"],
          "headersTruncated":false,
          "headers":[ 
           { 
             "name":"From",
             "value":"\"John Doe\" <john@example.com>"
           },
           { 
             "name":"To",
             "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@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>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
             ],
             "messageId":"custom-message-ID",
             "subject":"Hello"
           }
        }
    }

Отлично - здесь, под клавишей mail также включены headers информация, которая мне нужна.Итак - здесь, в этой статье , я узнал, как включить и включить headers в уведомления о возврате.Я установил его на своей панели инструментов AWS, как описано в этой статье, но информация заголовков по-прежнему не включена в объект bounce.Я ждал 24 часа, так как думал, что может быть зарезервировано некоторое время для активации со стороны AWS, но все еще ничего - подобъект заголовков все еще не включен в объект bounce.

Что я пропускаюеще?Нужны ли какие-то дополнительные дополнительные шаги для включения информации заголовков в уведомление о сбое?

...