通过亚马逊SES Api发送不同的身体

时间:2012-05-14 10:01:58

标签: asp.net-mvc amazon-web-services amazon-ses

我正在使用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.那么我可以使用异步控制器吗?这是好主意吗?

1 个答案:

答案 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)。