我正在使用PHP和AWS的SDK。我对SES服务有疑问。如果我按照与正在运行的脚本的其他部分相同的过程将电子邮件发送到SES。例如,在处理用户注册的同一进程中通过SES直接发送电子邮件,PHP进程是否会锁定,直到SES完成电子邮件的发送?或者,SES是否会进入内部排序队列,并在其认为合适时从那里发送?
或者,将电子邮件数据推送到SQS队列以通过SES处理发送是否更明智?
答案 0 :(得分:1)
一旦SES接受了您的消息,您的SES呼叫就会返回。
在SES发送消息之前,它不会阻止。
SES尝试快速传递消息,但实际上会重试最多12个小时,根据“场景2”这里:http://sesblog.amazon.com/post/Tx1S0ND7F4PCCGN/
可选地,通过简单通知服务异步(稍后)返回传递,失败和退回通知。 http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html
答案 1 :(得分:0)
理想情况下,您将拥有一个从后台调用的命令或其他函数,然后发送电子邮件,以免在此过程中让用户等待。您将设置侦听器,侦听注册事件,然后在注册过程中触发事件,然后处理任务。然后,听众将处理该事件。您可以在哪里发送电子邮件或发送到SQS,以便您的工作机器可以发送电子邮件。
这是一个关于如何做到这一点的好视频,在这个时代,不像5年前人们如何做到这一点。 https://laracasts.com/series/commands-and-domain-events
如果您要从同一请求对象发送电子邮件,则用户必须等待电子邮件发送,如果您只是将用户数据发送到队列,并设置处理来自队列的所有邮件的命令,使用消息数据发送适当的命令,然后您也可以通过这种方式发送电子邮件。但实际上,我认为简单的电子邮件发送会过度杀人。只需从接收请求的计算机上的后台进程发送它。如果您有一个将Web机与后台工作者分开的体系结构,您可以在注册时从Web服务器将数据发送到队列,然后工作人员会在从队列中收到该项后发送该电子邮件。