【发布时间】:2017-01-03 01:56:52
【问题描述】:
我正在使用 Amazon SES 发送电子邮件,并且想知道如何在失败的情况下正确处理重试。
假设我向SendEmail 操作发出POST 请求,但收到超时。无法知道消息是否已发送。
是否可以为每封电子邮件发送一个唯一标识符,以便我可以安全地重试发送这封电子邮件,让 SES 发送邮件,或者告诉我它已经发送?
否则,在网络错误的情况下,我必须在冒两次发送电子邮件的风险和根本不发送电子邮件之间做出选择。
【问题讨论】:
-
您目前是否使用 AWS 开发工具包发送电子邮件?我正在使用 PHP SDK,在触发 SendEmail 后,会有一个响应指示是否发送了电子邮件(检查github.com/aws/aws-sdk-php/blob/master/src/Aws/Ses/Resources/…)。然后我可以记录这个结果,接下来的事情就很简单了
-
@Hieu 是的,我愿意,是的,亚马逊确实返回了发送状态。我的意思是,如果邮件 not 发送是因为 HTTP 请求没有收到响应,或者 PHP 以致命错误退出,或者任何类似的,那么就没有办法知道是否我是否需要再次发送电子邮件。我有一个 cron 批处理待处理的电子邮件,我希望能够询问“ID 为 123 的电子邮件是否已发送?”
-
嗯,然后在 SDK 中,您可以使用 GetSendStatistics() 方法来获取使用情况统计信息。在此处阅读更多信息:“使用 Amazon SES API 监控您的使用统计信息”docs.aws.amazon.com/ses/latest/DeveloperGuide/…。希望它有所帮助;)
-
问题是,如果您发送两次或根本不发送,究竟会发生什么以及更可取的情况。实际上电子邮件并不可靠,因此有时消息甚至可以被目标服务器接受,然后由于某种原因被丢弃。您需要更好地描述这些消息的消费者才能正确接收建议。顺便说一句,您可以查看发送消息时返回的错误,以判断您的请求是否可以到达亚马逊。
标签: amazon-web-services amazon-ses