0

在 Web 应用程序中实现群发电子邮件发送功能的最佳方式是什么?两大案例:

  1. 根据他们的活动为单独的注册用户发送电子邮件(只需向用户发送简短提醒,以供前任关于他创建的主题中的新帖子)

  2. “为所有注册用户发送电子邮件”功能,如果系统管理员能够为所有注册用户发送一些消息,那就太好了。当然,将所有电子邮件添加到收件人不是我们可以采用的方式,因为每个用户的电子邮件地址都是匿名的。

据我了解,案例 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 应用程序中。

4

3 回答 3

1

如果您想在案例 2 中隐藏收件人,为什么不能将收件人放入 MailMessage 的密件抄送中?

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

<configuration>
  <!-- Add the email settings to the <system.net> element -->
  <system.net>
    <mailSettings>
      <smtp>
        <network 
             host="relayServerHostname" 
             port="portNumber"
             userName="username"
             password="password" />
      </smtp>
    </mailSettings>
  </system.net>

  <system.web>
    ...
  </system.web>
</configuration>
于 2010-05-19T14:34:36.283 回答
1

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

我做这样的事情,我使用硬盘上的一个放置目录,然后使用 MTA(Windows 中的 SMTP 服务)进行实际传输。

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

于 2010-05-19T14:36:07.043 回答
0

如果您在“emailAddresses”实例中收到过多的电子邮件,您将面临超时问题。您可能会考虑使用小型 Windows 服务应用程序来处理发送功能。这个对我有用。

于 2010-09-24T21:57:41.027 回答