1

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

4

1 回答 1

2

假设您已经拥有Amazon SES的生产访问权限(请参阅完成测试和评估 Amazon SES 后我应该做什么? ),并且发送配额已足够增加以首先每天发送 200.000 封邮件(请参阅Amazon SES 如何设置发送Limits ),分别记录了SendEmail操作的限制:

消息的总大小不能超过 10 MB。

Amazon SES 对每封邮件的收件人总数有限制: To:、CC: 和 BCC: 电子邮件地址的总和不能超过 50 个。如果您需要将电子邮件发送给更多的受众,您可以将您的收件人列表分成 50 个或更少的组,然后反复调用 Amazon SES 以将消息发送到每个组。[强调我的]

请注意:强烈建议Bcc:仅用于这种群发邮件操作,否则您的用户将看到他们的邮件地址相互暴露,我保证他们不会被逗乐!

因此,您可以一次准备包含 50 个Bcc:收件人的邮件,将您的用例的出站邮件数量降至 4.000 左右,这已经是一个相当大的改进。但是,请注意 AWS 团队对增加发送限制的相应回复以及常见问题解答

如果您要发送到多个 ISP [...],我建议您一次发送到一个地址,因为某些 ISP 对 BCC 上的多个地址很敏感:大量行[强调我的]

此警告是否适用取决于您的用例(例如,您可能能够通过 ISP 等对邮件进行分片)。

异步执行它很好并且可能有用,但您还需要确保保持在最大发送速率(邮件/秒)限制内。这些限制在AWS 管理控制台的 SES 选项卡中可见,但当然也可以通过 API 获得(有关详细信息,请参阅监控您的发送限制)。

于 2012-05-14T12:53:17.537 回答