私はこれらの通知の使用法を誤解している可能性があります。
E メールの送信後にトピックに発行するように AWS SES をセットアップしました。バウンス、苦情、および配信用に公開するように設定しました。
Web サーバーで SNS 通知を受信すると、データベースでそのメッセージ ID を検索し、ステータスを変更します。たとえば、配送通知が届いたら、メッセージのステータスを「配送済み」に変更します。バウンス通知が届いたら、メッセージのステータスを「Bounced」に変更します。
しかし、これらの電子メールの多くが両方の通知を送信しており、常に特定の順序で送信されているわけではないことに気付きました。どちらかが先に来ることもあれば、その逆もある。
したがって、「バウンス」が最初に到着し、次に「配信済み」の場合、このメッセージのデータベースでの私のステータスは「配信済み」になります。これはおそらく誤解を招くと思います。
最初の質問 これらの通知の順序を確認するにはどうすればよいですか?
2 番目の質問 「配送」通知を誤解していると思います。AWS のドキュメントを読んでみましたが、正直なところ、地球上で最高のドキュメントではありませんでした。誰かがこれについて簡単で明確な説明をしてくれますか?
3 番目の質問 これらの通知を正しく処理していますか? それとももっと良い方法がありますか?
あなたの助けに感謝します。
ありがとう!
--
参考までに、2 つの通知のセットで構成されるサンプルを添付しました。バウンス 1 回、配信 1 回。
{
"Type": "Notification",
"MessageId": "2efb9ee6-6bd5-576d-b80d-d0f5e3f44f23",
"TopicArn": "arn:aws:sns:us-east-1:#####:ses_beamstyle_com_hk",
"Message": {
"notificationType": "Delivery",
"mail": {
"timestamp": "2015-07-05T19:30:40.441Z",
"source": "<no-reply@bs.com.hk>",
"messageId": "xxxxx
"destination": [
"<ooto@simulator.amazonses.com>"
]
},
"delivery": {
"timestamp": "2015-07-05T19:30:41.101Z",
"processingTimeMillis": 660,
"recipients": [
"ooto@simulator.amazonses.com"
],
"smtpResponse": "250 2.6.0 Message received",
"reportingMTA": "a9-140.smtp-out.amazonses.com"
}
},
"Timestamp": "2015-07-05T19:30:41.179Z",
"SignatureVersion": "1",
"Signature": "xxxxx",
"SigningCertURL": "xxxxx",
"UnsubscribeURL": "xxxxx"
}
{
"Type": "Notification",
"MessageId": "b6e8bb7d-4e73-52ae-b690-f56ec6527ce5",
"TopicArn": "arn:aws:sns:us-east-1:#####:ses_beamstyle_com_hk",
"Message": {
"notificationType": "Bounce",
"bounce": {
"bounceSubType": "General",
"bounceType": "Transient",
"bouncedRecipients": [
{
"emailAddress": "ooto@simulator.amazonses.com"
}
],
"timestamp": "2015-07-05T19:30:41.000Z",
"feedbackId": "xxxxx"
},
"mail": {
"timestamp": "2015-07-05T19:30:40.000Z",
"messageId": "xxxxx",
"destination": [
"<ooto@simulator.amazonses.com>"
],
"source": "<no-reply@bs.com.hk>"
}
},
"Timestamp": "2015-07-05T19:30:41.315Z",
"SignatureVersion": "1",
"Signature": "xxxxx",
"SigningCertURL": "xxxxx",
"UnsubscribeURL": "xxxxx"
}