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

在应用程序中发送大量电子邮件的最佳实践(ASP.NET MVC 2,C#)?,c#,asp.net,email,massmail,C#,Asp.net,Email,Massmail,在web应用程序中实现批量电子邮件发送功能的最佳方式是什么?两个主要案例: 根据不同的注册用户的活动,为他们发送电子邮件(只需向用户发送简短提醒,提醒他们在其创建的主题中发布新帖子) “为所有注册用户发送电子邮件”功能,系统管理员可以为所有注册用户发送一些消息,这将是一件好事。当然,将所有电子邮件添加到收件人并不是我们可以采用的方式,因为每个用户的电子邮件地址都是非常有限的 据我所知,对于案例nr1,只要通过System.Net.Mail创建新邮件并发送它来创建一些电子邮件就没有问题了。。。但是

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

  • 根据不同的注册用户的活动,为他们发送电子邮件(只需向用户发送简短提醒,提醒他们在其创建的主题中发布新帖子)

  • “为所有注册用户发送电子邮件”功能,系统管理员可以为所有注册用户发送一些消息,这将是一件好事。当然,将所有电子邮件添加到收件人并不是我们可以采用的方式,因为每个用户的电子邮件地址都是非常有限的

  • 据我所知,对于案例nr1,只要通过System.Net.Mail创建新邮件并发送它来创建一些电子邮件就没有问题了。。。但是案件NR2呢

    我想smth是这样的:

    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应用程序中。

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

    我建议您在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>
    
    
    ...
    
    另一件事:不要使用gmail。首先,gmail有其局限性——无论如何,根本不使用外部服务器

    我做类似的事情,我使用硬盘上的放置目录,然后使用MTA(WindowsAcutally中的SMTP服务)进行实际传输


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

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

    循环有什么问题?这对我来说似乎是最好的选择。您每人发送1封电子邮件,保护每个人的匿名性。