PHP电子邮件效率(密送 vs 单独邮件)

16

我们基于Web的PHP软件目前向1-2000个收件人发送通讯,通常附带PDF附件(15KB-5MB)。通讯不需要定制到每个收件人。

问题: 将每个收件人作为密送抄送(BCC)发送一个电子邮件是否比为每个收件人生成唯一的电子邮件消息更好?

考虑因素: - 哪个选项对邮件传输代理的压力较小? - 哪个选项在编程上更有效率? - 哪个选项的资源占用较少? - 任何选项有限制吗?(例如BCC具有最大数量)

我尝试了Google,但无法找到任何基于实证证据的明确意见。实际上很难找到有任何意见的人。

感谢所有回答这个问题的人。非常感谢大家的反馈,以确保我们做事情是正确的!


1
个人而言,在抄送(bcc)的情况下,邮件服务器会自动拆分。如果出现问题,您不希望公开所有这些电子邮件地址。无论如何,您真的应该进行定制-至少用于跟踪。如果这超出了您的核心能力,有一些价格合理的服务可以做到这一点。 - user557846
此外 - 不要考虑使用 mail() 来完成这个任务。 - user557846
Dagon:为什么您建议不使用mail()函数?基本上,我创建了一个Mail类来处理消息的格式,但最终仍然使用mail()函数进行发送。是否有更有效的方法使用PHP将邮件推送到MTA? - OrangeFrog
阅读邮件页面关于使用mail()发送批量邮件的说明。每封邮件都需要打开和关闭连接,非常低效。 - user557846
3个回答

18

每个收件人生成一封电子邮件。使用 To 字段而不是 BCC,使其更加个性化。

优点

  • 邮件队列将准确反映正在发生的情况。
  • 您可以将负载分配到多个电子邮件服务器上。
  • 您可以个性化“收件人”、“主题”、“正文”等。
  • 您可以使用跟踪 URL。
  • 邮件服务器通常有每条消息的 BCC 限制。如果您一次只发送一条消息,则不会达到限制。
  • BCC 邮件通常会在所有投递完成之前留在队列中。虽然很少见,但我们曾经遇到过(最新的 qmail)某个单独的收件人会以一种混淆邮件服务器的错误响应方式进行回复,导致邮件服务器一遍又一遍地发送,失败,再次发送,失败...直到我们从队列中将其删除。这会让人非常不安。

缺点

  • PHP 脚本必须更加努力地生成单独的请求。

当然还有其他优缺点,但这是我遵循的列表。

更新: 关于 PDF 附件,我建议提供一个下载链接,除非将其与电子邮件一起包含是必不可少的。

  • PDF 附件会使电子邮件看起来更加可疑,并且垃圾邮件已知尝试利用 Acrobat 的易受攻击版本。这些 PDF 附件可能会使您的新闻通讯更有可能被放入收件人的垃圾邮件文件夹中。
  • 大型 PDF(1+MB)对于使用缓慢连接或受限设备(如智能手机)检查电子邮件的人来说并不友好。
  • 链接比附件小得多。如果您省略该5MB附件,您将节省高达13GB的带宽!

3
如果我不那么懒的话,我就会写下这些话。 - user557846
@Dagon +1 :) 我刚刚添加了一些关于PDF附件的信息。 - jimp
1
谢谢 - 我没有考虑到在多个MTA之间分散负载。这是个好主意!我们的应用程序被实例化,因此超过450个站点都在做同样的事情(2000个收件人x 450个站点x每年12封通讯...大量邮件)。 - OrangeFrog

1

这取决于您站点上的MTA基础设施。如果运行您的Web应用程序的服务器设置为将所有电子邮件转发到您的ISP的某个电子邮件中心,则BCC绝对是优势。否则,它可能会为您节省一些带宽,但不一定(这取决于您发送的实际地址)。此外,我建议您不要将PDF附加到消息中,而是将其放在Web服务器上,并在电子邮件中包含超链接。由于我收到的消息是批量消息,我相信即使他们选择接收,许多人也不会阅读您的消息。


我们在同一网络上使用邮件中继服务器。根据您的建议,我想BCC更快(从Web服务器到邮件中继服务器的一条消息,而不是从Web服务器发送2000条消息到邮件中继服务器)。 - OrangeFrog

1

不要附加这样大的文件(由于大小可能会被一些MTA拒绝),而是将其上传到公共可访问的地方(即Web服务器),并向所有电子邮件收件人发送一个简单的链接,他们可以使用该链接查看PDF。

这种方法的好处是您可以节省大量带宽,即使您需要为每个收件人提供不同的PDF,您仍然可以使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接