Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 设置大型电子邮件通知系统有哪些方法?_Php_Email_Notifications_Massmail - Fatal编程技术网

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

Php 设置大型电子邮件通知系统有哪些方法?,php,email,notifications,massmail,Php,Email,Notifications,Massmail,我的公司有一个用PHP建立的网站。我们使用内置的PHP电子邮件功能每天向订户发送数千封电子邮件 这是个糟糕的主意。它阻塞了我们的服务器,需要几个小时才能完成整个批处理 现在我已经研究了像MailChimp这样的群发邮件服务(它将取代我们目前向许多人发送相同邮件的系统),但我认为我真正想做的是建立一个稍微复杂的通知系统 我希望客户能够自定义他们收到的电子邮件的速率和内容,而不是在每次重要事件发生时向每个人发送大量电子邮件 即使使用这个新想法,我们也在谈论大量的电子邮件被发送 因此,我的问题非常具体

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

这是个糟糕的主意。它阻塞了我们的服务器,需要几个小时才能完成整个批处理

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

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

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

因此,我的问题非常具体:我大致知道如何在内部构建该系统,但发送所有这些电子邮件的最佳方式是什么

需要考虑的要点:

  • 有时,收件人之间的电子邮件内容是相同的,但其中许多内容将根据用户进行定制(他们选择收到通知的内容,有时进行聚合)
  • 我想要一个不会阻塞服务器的系统,并且能够在相当长的时间内完成。我不介意使用第三方服务(即使是付费服务),如果这是需要的话
  • 该系统应该可以很容易地挂接到PHP,或者API或者其他对我来说比较容易从典型的web服务器调用的东西
  • 我们有一个专用的服务器,并完全控制它(因此我们可以安装应用程序、服务等)
  • 任何类型的详细跟踪信息(打开、单击等)都是一个巨大的优势
  • 这些电子邮件有时是时间敏感的(因此发送不可能花一整天的时间)
想法?提示?给我指出正确的方向


编辑

澄清:

我可以自己做这些:

  • 维护用户列表
  • 根据用户偏好处理电子邮件内容生成
并且需要其他东西(应用程序、第三方服务、w/e)来:

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

我倾向于第三方服务,因为我不确定在发送数以千计的电子邮件时,任何应用程序都能避免阻塞服务器(虽然我不认为自己是一个电子邮件专家,所以我可能错了)。如果您担心可扩展性和定制,请使用Google AppEngine:它提供了一个电子邮件API,您可以通过HTTP接口连接任何内容


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

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

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


也可以在这里看到问题和我的答案。

很可能不理想,但如果您正在研究大规模传输,则可以设置一些商业解决方案,以便有效传输给定文件夹的内容

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


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

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

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

这不是一项完美的服务,但与许多其他服务相比,他们做得相当好。到目前为止,我几乎没有收到过关于它们的投诉。

请查看可能的内部解决方案

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

这是个糟糕的主意。它阻塞了我们的服务器,需要几个小时才能完成整个批处理


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

当你说它阻塞了你的服务器-你是说你的电子邮件服务器吗?你的网络服务器?还有别的吗

这里没有足够的信息来做出正确的诊断,但看起来问题是你自己造成的——当然,有很多人都会这样做