16

我的公司有一个用 PHP 构建的网站。我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件。

这是一个可怕的想法。它阻塞了我们的服务器,并且需要几个小时才能完成整个批次。

现在我研究了像 MailChimp 这样的群发邮件服务(它将取代我们当前向许多人发送同一封电子邮件的系统),但我认为我真正想做的是建立一个稍微复杂的通知系统。

我希望客户能够自定义他们收到的电子邮件的速率和内容,而不是每次发生重要事情时向每个人发送大量电子邮件。

即使使用这个新想法,我们也在谈论发送大量电子邮件。

所以我的问题非常具体:我对如何在内部构建系统有一个粗略的了解,但是发送所有这些电子邮件的最佳方式是什么?

要考虑的要点:

  • 有时电子邮件的内容在收件人之间是相同的,但其中许多将针对每个用户进行定制(他们选择收到通知的内容,有时是汇总的)。
  • 我想要一个不会阻塞服务器的系统,并且会在相当长的时间内完成。如果需要的话,我不介意使用第三方服务(甚至是付费服务)。
  • 该系统应该很容易与 PHP 挂钩,或者 API 或任何对我来说应该相对容易从您的典型 Web 服务器调用的东西。
  • 我们有一个专门的服务器并对其进行完全控制(因此我们可以安装应用程序、服务等)。
  • 任何类型的详细跟踪信息(打开、点击等)都是一个巨大的优势。
  • 这些电子邮件有时是时间敏感的(所以不能花一整天时间发送)。

想法?尖端?指出我正确的方向?


编辑

澄清:

我可以自己做这些:

  • 维护用户列表
  • 根据用户偏好处理电子邮件内容生成

并且需要其他东西(应用程序、第三方服务、w/e)来:

  • 接受电子邮件内容和地址并实际发送电子邮件
  • 提供跟踪数据(打开、点击等)。越详细越好。

我倾向于第三方服务,因为我不确定任何应用程序可以避免在发送数千封电子邮件时阻塞服务器(尽管我不认为自己是电子邮件专家,所以我可能是错的)。

4

9 回答 9

2

我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件。

这是一个可怕的想法。它阻塞了我们的服务器,并且需要几个小时才能完成整个批次。

为什么您认为您的问题与内置的 PHP 电子邮件功能有关?它是一个非常薄的“邮件”包装器或一个简单的 SMTP 客户端,具体取决于您运行的平台。

当您说它阻塞您的服务器时-您是指您的电子邮件服务器吗?你的网络服务器?别的东西?

这里没有足够的信息来做出正确的诊断,但看起来问题是你自己造成的——当然,有很多人承诺只要你购买他们最新的产品/服务,就会为你解决所有问题. 但是很有可能这并不能解决您当前的问题。

你能告诉我们:

  1. PHP在什么操作系统上运行

  2. 您如何调用代码来创建电子邮件

  3. php.ini 文件中的邮件配置是什么

  4. 您使用的是什么类型的 MTA?在什么操作系统上?

  5. 您是如何配置 MTA 的 - 它是直接交付还是通过智能中继交付?

  6. 哪个服务器正在“窒息”?

  7. 您对外发邮件采取了哪些反垃圾邮件措施?

然后告诉我们你做了什么来诊断故障以及为什么你认为它专门用于发送邮件。

C。

于 2010-01-19T22:17:21.570 回答
1

我通常通过使用邮件“发送”功能来解决这个问题,该功能将电子邮件转储到队列(数据库表)中,每几分钟运行一次作业,抓取队列中的下 x 封电子邮件,将它们发送出去并将它们标记为成功了。这就是它的简单骨头。然后,您可以在版本 2 中添加对电子邮件故障、退回邮件等的处理。

于 2010-01-19T19:08:36.013 回答
1

我建议使用第三方邮件服务Silverpop或类似的东西。我们已经使用了几年并且相当满意。他们已经与主要的电子邮件客户端(AOL、Yahoo!、Gmail 等)建立了关系,并且他们很好地告诉您您发送的内容是否可能被归类为垃圾邮件。

他们有一个相当广泛的 API,它使用可以绑定到现有系统的 XML HTTP/HTTPS 请求。您可以使用它来远程触发电子邮件、安排邮件发送、自定义电子邮件内容、设置、管理和查询庞大的收件人列表、运行批处理等。

这不是一项完美的服务,但与那里的许多其他服务相比,他们做得很好。到目前为止,我对他们的抱怨很少。

于 2010-01-19T19:48:11.257 回答
0

如果您担心可扩展性和自定义,请使用 Google AppEngine:它提供了一个电子邮件 API,您可以通过 HTTP 接口与它连接任何东西。

当然,这只是一个建议——如果不合适,请忽略。

于 2010-01-19T19:06:46.187 回答
0

为什么不保留您的 PHP 系统并使用第三方 SMTP 服务?一些可靠的公司以合理的价格提供只使用电子邮件的机器,例如我计划使用的Dewahost 。

另请参阅第三方电子邮件发件人问题和我的答案。

于 2010-01-19T19:14:17.497 回答
0

很可能并不理想,但是如果您正在研究大规模传输,那么可以设置诸如Port 25 的 PowerMTA 之类的商业解决方案以有效地传输给定文件夹的内容。

因此,您只需使用 PHP 为每封出站电子邮件创建个性化的 MIME 格式的原始数据,并在传输之前将它们放置在临时目录中。(我过去曾编写过这样的系统,您会惊讶于 PHP 能够处理电子邮件,即使是非常复杂的文本和带有图像作为内联附件的 HTML 电子邮件等。)一旦你准备好了传输,然后您将文件整体移动到 PowerMTA 监控的文件夹,它会负责传输。

根据您的看法,这种解决方案的好处/问题是您需要与 AOL、MSN/Hotmail 等人建立信任关系,以确保您的邮件服务器不会因为用户的将电子邮件报告为垃圾邮件。(也就是说,这可能是任何 DIY 解决方案的一个因素。)

于 2010-01-19T19:15:47.193 回答
0

查看Campaign Enterprise以了解可能的内部解决方案。

于 2010-01-19T20:40:28.543 回答
0

我的一位朋友使用http://www.tailoredmail.com但我个人没有使用过

于 2011-10-22T08:09:04.663 回答
0

我知道这是一个较老的问题,但我只是想建议SendGrid,它本质上是一个“电子邮件服务器即服务”,允许您以每封电子邮件的成本发送电子邮件。

于 2013-02-27T19:21:02.963 回答