我有一个以编程方式生成和发送电子邮件的应用。收件人列表可以超过1000.我一直在循环并发送个人电子邮件,但这花费的时间太长,大约0.5秒。我现在正在研究的方法是删除邮件正文中的自定义,并发送一封包含BCC中所有地址的电子邮件。 (也许其他解决方案是可能的,我欢迎他们,但我主要是想深入研究这个BCC解决方案的复杂性。)
单个电子邮件允许的收件人数量是否有限制?这完全取决于我的电子邮件客户端和/或SMTP服务器的配置吗?我的域名无法控制其他限制吗?此外,BCC是如何处理的?我假设BCC发行版需要在某些时候分解为单独的邮件消息。邮件客户端(在我的情况下是javax.mail)对此负责,还是邮件服务器执行此操作?
我也对如何测试新的电子邮件冲击波程序的建议感兴趣?
我不认为通过谷歌或任何地方(我也不想)创建1000个帐户将是一个有效的测试。我听说有一些邮件服务器优化面向同一主机上的多个收件人。在我的情况下,大多数将是不同的主机。
另一种方法是让所有收件人参与,看看他们是否收到了电子邮件。我可以做到这一点,但我想避免发送垃圾邮件,假设如果第一次出现问题,我可能需要多次测试。
或者我只是假设一些限制,并发送批量电子邮件,每个收件人有50个或100个任意数量的收件人?
答案 0 :(得分:3)
BCC在SMTP服务器内部运行;没有收件人知道其他BCC的电子邮件地址,所以这是一个完全取决于您的SMTP服务器的限制。
您应该咨询服务器管理员。
答案 1 :(得分:2)
更加明确,覆盖SMTP的RFC(2821)没有提到邮件服务器特定的限制之外的收件人限制:
“如果SMTP服务器对RCPT的数量有实施限制 命令和这个限制已经用尽,它必须使用响应代码 452(但客户也应该为552准备,如上所述 以上)。如果服务器上配置了站点策略限制 RCPT命令的数量,它可以改为使用5XX响应代码。 如果打算采取政策限制,这将是最合适的 如果特定邮件正文的总收件人计数,则应用 即使该邮件正文是通过多个邮件发送的,也会被强制执行 交易。“
答案 2 :(得分:1)
感谢您的评论。据我所知,传出的SMTP服务器将负责分解每条消息。在构建新邮件时,传出SMTP服务器将仅为每个BCC收件人发送适用的RCPT TO命令。因此,在所有收件人都是BCC的情况下,每条消息只有一个RCPT TO命令。
在这种情况下,似乎我真的只需要关注我们的外发SMTP服务器配置。无需担心目标SMTP服务器。
我得到了一个建议,似乎是测试这个的好方法。我可以将我的消息发送给许多收件人,每个收件人都有一个我们有效父域的唯一虚假子域。如果未找到该子项的MX记录,则将使用该父项。传出的SMTP服务器不会意识到虚假域不存在,因此这应该避免对具有公共域的多个收件人进行任何SMTP优化。我们也可以配置这些消息都将被路由到同一个收件箱。