在Linux上用PHP发送电子邮件的问题

时间:2014-08-31 15:28:46

标签: php sendmail

我创建了一个脚本,可以在客户下订单时通过电子邮件向客户发送订单确认。它是一个简单的PHP mail()脚本。这也是在共享的Linux主机上完成的。

我的问题是脚本将被收到10次,然后它会在很长一段时间内停止接收(通过任何电子邮件帐户),然后突然间它们会再次开始接收。

我已经与这个问题联系了我的主人,他们告诉我一些我认为由于无知而错误的事情。首先是电子邮件提供商可能阻止了电子邮件。如果是这种情况,我不会想象10会在3个不同的电子邮件服务器(aol,gmail,hotmail)上通过,然后突然停止。他们还说他们的电子邮件是批量发送的,我认为这些电子邮件不适用于客户脚本。如果是这种情况,当我一半时间运行我的脚本时,它们不会立即收到。此外,在这些干燥的鲸鱼喷水期间,当任何主机都没有收到电子邮件时,那些电子邮件永远不会进来。第三,他们告诉我使用他们的webformmailer.php将使用他们的批处理系统发送电子邮件。问题是,他们的webformmailer只允许我发送电子邮件到一个预定的电子邮件(因为我必须在控制面板中设置它)。

所以我有几个问题:这个问题有多少与我的主机,我的脚本和电子邮件提供商有关?有哪些修复方法可以使电子邮件更可靠?我一直在试验一些像swiftmailer这样的电子邮件库,但他们似乎并没有改善这种情况。

2 个答案:

答案 0 :(得分:0)

听起来您的托管服务提供商设置了每分钟/每小时的最大电子邮件数量。它似乎被提供商服务器阻止了。

因此,解决方案是使用其他smtp服务器而不是mail()默认值。

答案 1 :(得分:0)

如果您是共享主机,请不要使用mail(),但由于以下几个原因,它永远不会以您想要的方式运行:

  • 主持人通常会限制您可以发送的邮件数量,这可能对您与之共享服务器的每个人都是全局的。
  • 较大的电子邮件提供商可能已经看到您现在正在使用的IP垃圾邮件,可能会对您进行速率限制。
  • 大型电子邮件提供商也可能只是将您的IP列入黑名单,因此有些电子邮件甚至不会到达。

如果您有权访问,请检查您的网络服务器错误日志,mail()会记录任何错误响应,以便您可以查看是否从您发送的主机中获得了TEMPORARILY DEFERRED邮寄到。

我的建议是使用SMTP连接到可以发送邮件的电子邮件主机或其他一些外部电子邮件服务。