一次发送许多与MvcMailer的电子邮件

时间:2012-07-30 14:17:39

标签: c# asp.net-mvc-3 iis mvcmailer

我有一个MVC3网络应用程序,我正在使用MvcMailer发送电子邮件(可能一次成千上万)。如果我只是将每个收件人BCC发送到同一个电子邮件中,这是正常工作,但如果我尝试循环通过他们发送个人电子邮件它是非常慢的,我猜是因为它每次都连接到smtp服务器?

我们有自己连接的smtp服务器,我目前正在尝试发送这样的电子邮件:

foreach(Person x in names)
{
    var mail = Mailer.Example_Mail()
    mail.To.Add(x.Email_Address);
    mail.Send();
}

我从tutorial知道您可以将电子邮件保存到文件而不是连接到smtp服务器并立即发送,我也从此post的接受答案中知道您可以让IIS接收并发送它们,但不幸的是我不知道如何。

如果有人能让我知道这样做的最佳方法是什么,那将是非常棒的!谢谢大家!

更新

我已经尝试使用@Mike建议的SendAsync()方法,这确实可以大大提高速度,但它现在正在丢失约40%的电子邮件。没有错误被抛出,每100封电子邮件中只有65封通过。我试图捕获“处理异步电子邮件事件”部分中的建议here的任何错误,但似乎根本没有抛出任何错误。代码如下:

List<object> errors = new List<object>();
var mail = Mailer.Example_Mail();
mail.To.Add("some@address.com");
for (int i = 0; i < 100; i++)
{
    var client = new SmtpClientWrapper();
    client.SendCompleted += (sender, e) =>
    {
        if (e.Error != null || e.Cancelled)
        {
            errors.Add(e);
        }
    };
    mail.SendAsync("user state object", client);
}

0 个答案:

没有答案