我们正在使用Amazon SES发送电子邮件,它说我们的最大发送速率是每秒5次。
我不知道的是如果我们每秒发送超过5个会发生什么?他们排队还是拒绝?
我们有一个邮件列表,其上有超过1,000人,他们都试图一次性发送(我们被批准为此目的使用Amazon SES)。
以下是我用来发送电子邮件的代码:
namespace Amazon
{
public class Emailer
{
/// <summary>
/// Send an email using the Amazon SES service
/// </summary>
public static void SendEmail(String from, String To, String Subject, String HTML = null, String emailReplyTo = null, String returnPath = null)
{
try
{
List<String> to
= To
.Replace(", ", ",")
.Split(',')
.ToList();
var destination = new Destination();
destination.WithToAddresses(to);
var subject = new Content();
subject.WithCharset("UTF-8");
subject.WithData(Subject);
var html = new Content();
html.WithCharset("UTF-8");
html.WithData(HTML);
var body = new Body();
body.WithHtml(html);
var message = new Message();
message.WithBody(body);
message.WithSubject(subject);
var ses = AWSClientFactory.CreateAmazonSimpleEmailServiceClient("xxx", "xxx");
var request = new SendEmailRequest();
request.WithDestination(destination);
request.WithMessage(message);
request.WithSource(from);
if (emailReplyTo != null)
{
List<String> replyto
= emailReplyTo
.Replace(", ", ",")
.Split(',')
.ToList();
request.WithReplyToAddresses(replyto);
}
if (returnPath != null)
request.WithReturnPath(returnPath);
SendEmailResponse response = ses.SendEmail(request);
SendEmailResult result = response.SendEmailResult;
}
catch (Exception e)
{
}
}
}
}
答案 0 :(得分:3)
我发现答案是他们被拒绝了。
答案 1 :(得分:3)
如果我们尝试每秒发送更多邮件然后允许的限制,我认为请求被拒绝。
中找到了这个当您以超过最大分配发送速率的速度呼叫Amazon SES时,Amazon SES将拒绝超过限制请求,并出现“限制 - 超出最大发送速率”错误。
“限制 - 超出最大发送速率”错误是可重试的。此错误与Amazon SES返回的其他错误不同,例如从未经验证的电子邮件地址发送或发送到列入黑名单的电子邮件地址。 这些错误表明该请求不会以当前形式被接受。可以在以后重试因“限制”错误而被拒绝的请求,并且可能会成功。
如果他们将请求排队,这将是一个很好的选择,但我们的经验是,他们没有。如果我在这里理解错误,请告诉我。
答案 2 :(得分:1)
如果您在达到每日发送配额(您在24小时内可以发送的电子邮件的最大数量)后尝试发送电子邮件,或者您的最大发送速率(每条邮件可以发送的最大邮件数量)第二),Amazon SES会丢弃该消息,并且不会尝试重新发送它。。
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/reach-sending-limits.html
在这种情况下,我一直在寻找解决问题的最佳方法。