Amazon SES - 使用C#控制台应用程序每秒发送大量个性化电子邮件

时间:2014-03-04 15:50:42

标签: amazon-ses

我正在使用C#控制台APP发送个性化批量电子邮件,但我发现了瓶颈,如果我使用顺序编程,我每秒只能发送1封电子邮件。我试图创建一个多线程的应用程序,但我每秒只能发送两封电子邮件。

我怎样才能做得更好?

这是代码的一个片段:

public static void MainProgram(列出电子邮件,字符串cuerpo_email_en,字符串cuerpo_email_es)         {

       //emails list is populated with 50.000 emails

        DateTime timeControllerForSendingEmails = DateTime.Now;

        while (emails.Count > 0)
        {
            if ((DateTime.Now - timeControllerForSendingEmails).TotalSeconds >= 1)
            {
                timeControllerForSendingEmails = DateTime.Now;

                //this method gets a list of 60 emails and remove them from the main list
                List<EmailEnt> queuedEmails = GetEmailsQueue(emails, 60));

                Send(queuedEmails);
            }

        }
    }

public void Send(List<EmailEnt> queuedEmails)
    {
        IList<Task> tasks = new List<Task>();
        List<string> logLines = new List<string>();

        foreach (EmailEnt emailEnt in queuedEmails)
        {
            string subject = "Hello {name}";
            string body = "im the body;
            
            tasks.Add(Task.Factory.StartNew(() =>
            {
                SendEmail(emailEnt, subject, body);

            }));

        }


        Task.WaitAll(tasks.ToArray());
    }

1 个答案:

答案 0 :(得分:0)

你还有机会以“沙盒模式”运行吗?根据AWS:

  

当您在沙箱中时,您的发送配额为每封200条消息   24小时和您的最大发送速率是每条消息一条   第二。要增加发送限制,您需要申请   生产访问。有关更多信息,请参阅请求生产   访问Amazon SES。请求生产访问并启动后   发送电子邮件,您可以进一步增加发送限制   遵循增加您的Amazon SES发送中的指导   限制部分。

如果没有,我使用与此类似的代码发送第二封电子邮件(不在SES上),并且工作正常:

  Parallel.ForEach(mailQueue, new ParallelOptions() {MaxDegreeOfParallelism = 7}, itm=>SendEmail(itm));

这或许在功能上与您正在做的事情相同,但我可以肯定地说它确实提供了更高的吞吐量,可能值得一试。