设置大型电子邮件通知系统有哪些方法?

时间:2010-01-19 19:02:32

标签: php email notifications massmail

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

这是一个糟糕的主意。它扼杀了我们的服务器,并花了几个小时来完成整批。

现在我已经看过像MailChimp这样的群发邮件服务(它将取代我们目前向许多人发送同一封电子邮件的系统),但我认为我真正想做的就是建立一个有点复杂的通知系统。

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

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

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

要考虑的要点:

  • 有时,收件人之间的电子邮件内容是相同的,但其中许多内容将按用户自定义(他们会选择收到通知的内容,有时会汇总)。
  • 我想要一个不会阻塞服务器的系统,并且会在相当长的时间内完成。我不介意使用第三方服务(即使是付费服务),如果这是它将要采取的。
  • 系统应该可以轻松地连接到PHP,或者API或者任何相对容易的东西,我可以从典型的Web服务器调用。
  • 我们有专门的服务器并完全控制它(所以我们可以安装应用程序,服务,等等。)
  • 任何类型的详细跟踪信息(打开,点击等)都是一个巨大的优势。
  • 这些电子邮件有时会对时间敏感(因此无法全天发送)。

思考?提示?指出我正确的方向?


修改

澄清:

我可以自己做这些:

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

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

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

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

9 个答案:

答案 0 :(得分:2)

  

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

     

这是一个糟糕的主意。它扼杀了我们的服务器,并花了几个小时来完成整批。

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

当你说它扼杀你的服务器时 - 你的意思是你的电子邮件服务器?你的网络服务器?别的什么?

这里没有足够的信息可以做出正确的诊断,但看起来问题是你自己制造的 - 当然,有很多人承诺如果你只买了他们的最新产品,那么你就可以解决所有问题产品/服务。但是很有可能这不能解决你目前的问题。

你能告诉我们:

  1. 运行PHP的操作系统

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

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

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

  5. 你是如何配置MTA的?是直接提供还是通过智能中继提供?

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

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

  8. 然后告诉我们你做了什么来诊断这个错误以及为什么你认为它专门用于发送邮件。

    下进行。

答案 1 :(得分:1)

我通常通过使用邮件“发送”功能将电子邮件转储到队列(数据库表)中,每隔几分钟运行一次作业,抓取队列中的下一封x电子邮件,将这些电子邮件发送出去,标记为成功。这是它的简单骨头。然后,您可以在版本2中添加对电子邮件失败,返回邮件等的处理。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

另请参阅问题Third Party Email Senders和我的答案。

答案 5 :(得分:0)

可能不太理想,但如果您正在寻找大规模传输,可以设置Port 25's PowerMTA等商业解决方案,以便有效地传输给定文件夹的内容。

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

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

我的一位朋友使用http://www.tailoredmail.com,但我没有亲自使用

答案 8 :(得分:0)

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