我正在使用Amazon-SES api向客户发送电子邮件。这是非常成功的,但我必须为每个客户发送不同的身体。当我开始发送大约200,000个客户的邮件时,下面的代码如何?它是循环200.000次还是我可以准备一个对象并发送一次(如n:n系统,现在它是1:n)。
var clientList=new List<String>(); //200.000 mail adress
foreach(var to in clientList)
{
SendEmailRequest email = new SendEmailRequest();
email.Message = new Message();
email.Message.Body = new Body();
email.Message.Body.Html = new Content(bodyhtml);
email.Message.Subject = new Content(subject);
email.WithDestination(new Destination() { ToAddresses = new List<String>() { to } })
.WithSource("mysite@mysite.com")
.WithReturnPath("mysite@mysite.com");
SendEmailResponse resp = client.SendEmail(email); //that's 1:n
}
SendEmailResponse resp = client.SendEmail(emailList); //that's n:n but it's a wrong usage
如何在Amazon SES中发送n:n算法?
应用程序是Asp.net MVC 3.那么我可以使用异步控制器吗?这是好主意吗?
答案 0 :(得分:2)
假设您已经拥有Amazon SES的生产访问权限(请参阅What should I do after I'm finished testing and evaluating Amazon SES?)并且已充分增加发送配额,以便首先发送200.000封/天(请参阅{{ 3}}),记录了How Amazon SES Sets Sending Limits操作的相应限制:
邮件的总大小不能超过10 MB。
Amazon SES对每封邮件的收件人总数有限制: To:,CC:和BCC:电子邮件地址的总和不能超过 50 即可。如果您需要向更多的受众发送电子邮件,可以将收件人列表分成50个或更少的组,然后拨打电话 Amazon SES反复向每个组发送消息。 [强调我的]
请注意:严格建议仅将Bcc:
用于此类群发邮件操作,否则您的用户会看到他们的邮件地址相互暴露,我可以保证他们根本不会被逗乐!
因此,您可以一次准备50个Bcc:
收件人的邮件,将您的用例的出站邮件数量减少到大约4.000,这已经是一个相当大的改进。 但,请注意AWS团队对SendEmail的相应回复:
如果您要发送给多个ISP [...],我建议 由于某些ISP敏感,因此一次发送到一个地址 关于BCC上的多个地址:大量生产线。 [强调我的]
此警告是否适用取决于您的使用情况(例如,您可以通过ISP等方式对邮件进行分片)。
异步执行它很好并且很有用,但您需要确保保持在最大发送速率(邮件/秒)限制内。这些限制在Increase sending limit, and question on FAQ的SES标签中可见,但当然也可通过API获取(有关详细信息,请参阅AWS Management Console)。