在应用程序中发送大量电子邮件的最佳做法(ASP.NET MVC 2,C#)?

什么是在Web应用程序中实现批量电子邮件发送function的最佳方式? 两个主要案例:

  1. 根据他们的活动,为不同的注册用户发送电子邮件消息(只是向用户发送简短的提醒,以获取有关他创建的主题中的新post)

  2. “为所有注册用户发送电子邮件”function,系统管理员可以为所有注册用户发送一些消息。 当然,将所有电子邮件添加到收件人并不是我们可以采用的方式,因为每个用户的电子邮件地址都是无法实现的。

正如我对案例nr1所理解的那样,通过创建新邮件并发送它,通过System.Net.Mail创建一些电子邮件消息没有问题……但是案例nr 2怎么样?

我想像这样:

foreach(var emailAddress in emailAddresses) { MailMessage mail = new MailMessage(); mail.From = new MailAddress("jondoe@bla.net"); mail.To.Add(emailAddress); mail.Subject = "test"; mail.Body = "test"; SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); smtp.Send(mail); } 

这不是好方法:)所以问题是实现这一目标的最佳方法是什么?

顺便说一句,我们没有必要为电子邮件发送部署一些服务,这应该集成到Web应用程序中。

另一件事:不要使用Gmail。 首先,gmail有限制 – 无论如何,根本不使用外部服务器。

我这样做的东西,我在硬盘上使用drop目录,然后使用MTA(Windows中的SMTP服务)进行实际传输。

这样我快速完成(只是文件生成),而实际的电子邮件可能需要更长时间。

如果你想隐藏案件2中的人,为什么你不能把收件人放入MailMessage的BCC?

我建议的一件事是在web.config中定义您的电子邮件设置,如下所示:

           ...   

如果您在“emailAddresses”实例中收到太多电子邮件,则会遇到超时问题。 您可能会考虑使用一个小型Windows服务应用来处理发送function。 这个对我有用。