我在服务器上制作了一个包含对mail()的调用的快速PHP脚本,并开始对其进行测试。 html页面始终会立即加载,因此我认为这意味着包含对mail()的调用的PHP已完成执行。但是,仅在通话后每10-20分钟才会收到一次mail()发送的电子邮件。为什么要延误? mail()是否触发外部程序? (如果相关,则将电子邮件发送到gmail电子邮件帐户)
最佳答案
您看到的行为与PHP的mail()
函数无关。取而代之的是,PHP将SMTP邮件服务器传递给了该邮件服务器,这需要花费一些时间来传递。该服务称为a mail transport agent, or MTA。
有很多潜在的原因无法立即交付。可能是,您看到的延迟是接收服务器上的greylisting,这意味着接收邮件服务器拒绝接受消息,直到发送服务器(您的PHP脚本将其发送给它)尝试几次以重新发送它。行为良好的MTA会重试失败的发送尝试,但垃圾邮件服务器通常不会重试,因此这是减少垃圾邮件的一种简单而有效的方法。
它甚至可以很简单,就像SMTP服务器上等待发送的长消息队列一样,您的消息正在排队等待。 (不过,更可能将其列入灰名单)
不过要记住的最重要的一点是,电子邮件并非是即时的,因此永远不能保证即时。在过去的十年左右的时间里,我们已经习惯了迅速地发送电子邮件,但是您永远不能保证快速发送。
关于php - 是什么使PHP的mail()函数如此缓慢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18325269/