2014-08-31 92 views
0

我有一个创建的脚本,用于在下订单时向其发送订单确认邮件。这是一个简单的PHP邮件()脚本。这也是在一个共享的Linux主机上完成的。在Linux上使用PHP发送电子邮件的问题

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

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

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

+0

如果邮件服务器在短时间内收到大量电子邮件/如果用户将您的电子邮件标记为垃圾邮件,则可以自由地将您的电子邮件标记为垃圾邮件 – user3791372 2014-08-31 16:49:31

+0

@ user3791372我明白,但我已将它们专门标记为信任3个独立的供应商,他们都收到他们完全罚款,然后都停止接收他们在同一时间,并开始在同一时间再次接收他们,让我相信这是我的主机扼杀他们。 – sharf 2014-08-31 17:11:03

回答

0

如果你是一个共享的主机上,不要使用mail(),它永远不会工作,你所希望的方式有以下几个原因:

  • 主机通常放在邮件的数量限制,您可以发送,这可能是全球共享服务器的每个人。
  • 较大的电子邮件服务提供商可能已经看到您现在使用的IP上的垃圾邮件,并且可能会限制您的速度。
  • 大型电子邮件提供商可能也会将您的IP列入黑名单,因此某些电子邮件甚至永远不会到达。

如果你有机会,请检查你的web服务器错误日志,mail()将记录任何错误响应存在,所以你可以看到,如果你正在从主机TEMPORARILY DEFERRED你发送的邮件。

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

+0

我的主人向我发誓他们没有任何限制,这是我认为实际发生的事情。如果电子邮件提供商阻止了它,为什么它们在3个电子邮件提供商(在他们确实打了一次垃圾邮件并且我必须制定一个规则允许他们)时完全没问题,然后突然停止所有3个半小时或所以?另外,我将如何通过SMTP发送邮件在PHP? – sharf 2014-08-31 15:42:48

+0

如果收件人的提供商在默认情况下发送垃圾邮件,它可能会通过更加侵入性的垃圾邮件过滤器被捕获。那里有几个库,试一试[SwiftMailer](http://swiftmailer.org/)。 – SamT 2014-08-31 16:10:56

+0

我一直在尝试SwiftMailer,但我的理解是,它不能用sendmail在Linux上执行SMTP,是不正确的?你能指出我的方向吗? – sharf 2014-08-31 16:40:27

0

这听起来像您的托管服务提供商设置每分钟/小时或其他东西的最大数量的电子邮件。它看起来像是被提供商服务器阻止的。

所以一个解决方案是只使用其他smtp服务器而不是mail()默认值。

+0

正如我在对SamT的评论中所说的,我的提供者发誓他们并不限制它,但我不相信它们。我将如何通过SMTP发送电子邮件在PHP? – sharf 2014-08-31 15:44:09