Я использую 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.
Что я пропускаюеще?Нужны ли какие-то дополнительные дополнительные шаги для включения информации заголовков в уведомление о сбое?