PHP质量的电子邮件的最佳做法?(PHPMailer+Gmail)
题
我想如何处理发送大量的电子邮件从我的网应用程序,以及是否有任何最佳做法这样做。计算器已经标注这为'主观',这可以在一定程度上,但我需要知道最成功的方式实施这一系统,或者是否任何标准化的方法存在。
在我的网络应用程序,有的用户头的团体的1到10 000名用户。这个用户必须能够以电子邮件消息发送到所有这些用户通过我的系统。因此,我的系统中的负责发送多达10,000个电子邮件向个人用户的每个组头。
尽我所知,没有率限制在邮件发送消息的个人(虽然还有一个500收件人max)。
现在,我目前的设置是:
- 当一个消息发送通过该系统,它进入电子邮件排队。
- Cron抓住脚本自队列的消息,每隔几分钟,并发送给了那些电子邮件。
- 所有电子邮件是免费的SMTP server。
- 实际应用做的邮件是PHPMailer.
这种设置,如用户基础的增长,可能会是不够的。这问题我是:
- 我应该使用本地SMTP server,而不是?
- 我应该使用邮件二进制在地方的机器呢?我这种情况下,也许我可以跳过的队列中一共?
- 是否有一个接受的方式做到这一点?
谢谢!
解决方案
有一个电子邮件数为"高"作为10.000一天,我不会依赖GMail(或任何其他)SMTP。不,他们不能处理它,很明显,他们可以处理更多。但他们可能不想。
有一个地方SMTP server是海事组织的方向走:
- 这是很容易设置(只是不要让人们使用它,而无需一个强大的欧森方案)
- 大多数现代化 MTA 处理发送队列很好
- 你不会有处理照片(或其他)的决定来阻止你的帐户有一天用于配额的原因
其他提示
谷歌的应用程序的发动机
我会写这个在谷歌的应用程序的发动机(python),因为:
- 它的尺度。
- 它具有良好的电子邮件。
- 它有一个taskqueue有一个良好的api访问。
- 因为蟒蛇是真正的好的语言。
- 它是(相对)低廉。
PHP
如果我将实现它在PHP我
- 发现自己一个很好的SMTP server它可以让你发的邮件,因为Gmail不会让你发这样的体积。我肯定这会花你一些钱。
- 自己找到一个体面的PHP电子邮件的图书馆发送消息,例如像PHPMailer像你说的。
- 使用一个消息队喜欢例如beanstalkd把电子邮件在队列,并发送电子邮件是异步的。第一,因为这个用户必须迅捷页负荷。第二,有一个消息队喜欢beanstalkd你可以调节的速度发送更好,这将防止重载电脑与工作。你会需要有ssh访问服务器的汇编(安装)beanstalkd.你可以找到beanstalkd在 beanstalkd
- 你还需要ssh的访问,以运行PHP script的背景,这将过程的消息的队列。你可以找到一个beanstalkd-客户 php beanstalkd-客户
从php/apache/网页
这是页面,从中你会发送出消息给用户。从这一网页发送消息,以beanstalkd通过编码的东西在线的这一点:
// register Pheanstalk class loader
require_once('pheanstalk_init.php');
$pheanstalk = new Pheanstalk('127.0.0.1');
$message = ""; // This would contain your message
$pheanstalk->put(json_encode($message);
你必须把消息在信息队列使用放命令
从长期运行的PHP script在背景:
代码看起来像这样的东西:
// register Pheanstalk class loader
require_once('pheanstalk_init.php');
$pheanstalk = new Pheanstalk('127.0.0.1');
while(true) {
$job = $pheanstalk->reserve();
$email = json_decode($job->getData());
// Sent email using PHP mailer.
$pheanstalk->delete($job);
}
像我说的这是可能PHP和谷歌的应用程序的发动机,但我会去的应用程序的发动机,因为它是更容易实现。
牌子的应用限制为大约500的电子邮件的一天。我不知道该如何结合与500收件人最大,但是如果你想要发送的10 000个电子邮件你可能会想找到其他邮件服务器。我个人使用当地的服务器或服务提供商或者数据中心的SMTP。
如果你发送的许多电子邮件,我会推荐使用的队列,使用户是不是坐在那里等待电子邮件发送。
要非常小心,你域中不会被列入黑名单作为一个垃圾邮件域。如果是这样,你可以期待你的大多数电子邮件向被阻止、支持、销售等。这反过来可能会很昂贵。
你可以不要使用的服务一样 AWeber.不只是他们设置程序来处理这些金额的电子邮件,但他们也许可以给你更多的指标比你能实现你自己的。
我不知道如果这是魔术阐述的任何地方,但从以往的经验,我可以告诉你,Gmail将会把十五分钟左右的冷冻在你的帐户,如果你开始发送数以百计的消息的时间。这发生在我身上的最后一周。我觉得你应该举办自己的SMTP server。使用邮件()function往往会把你的邮件在别人的垃圾邮件。
只要安装后缀在地方机,或一个机关同一局域网为最大的接入速度。确保它是好的保护之外,并迅速可以从里面。
然后码PHP script直接注入的电子邮件的后缀队列中。这应大大增加处理速度的邮件递送。