使用PHP邮件时有时会出现大的延迟()

时间:2010-05-28 07:55:43

标签: php http email

我有一个处理来自Windows应用程序的订单的网站。其工作原理如下:

  1. 用户点击“Windows应用”中的“立即订购”
  2. App将带有POST的文件上传到PHP脚本
  3. 该脚本立即调用PHP mail()函数(订单未存储在db中)
  4. 大部分时间都可以正常使用。但是,有时会发生很大的延迟(几天)。客户称之为产品尚未交付的原因。

    延迟邮件的电子邮件标题如下:

    延迟似乎发生在这里:

    Received: (from @localhost)
    by ---- (8.13.8/8.13.8/Submit) id o4J9lA7M031307;
    Wed, 19 May 2010 11:47:10 +0200
    

    我已经多次向托管我网站的网络托管服务报告此问题。他们说延迟不会发生在他们的网络中(不可能)。

    但是他们确实在5月26日邮件服务器中首次看到了这封电子邮件,这是邮件编写完成后的第7天。订单标有用户本地PC的时间戳,也与5月19日相符(所以这不是PC时钟问题)

    有趣的是,所有延迟的邮件(订单都放在不同的日子)立即进入。所以我突然在不同的日子里收到了14封电子邮件。

    有什么想法可能会引入这种延迟吗?我的PHP代码中是否存在导致此问题的错误? (我不敢相信我可以在PHP代码中引入7天的循环)

3 个答案:

答案 0 :(得分:1)

你是对的 - 它与PHP无关。

通常,慢速邮件问题都与DNS问题有关 - 但这不是问题所在。

每当我配置了MTA(邮件传输代理)时,我已经告诉它在7天过期之前就已经放弃了。

  

有趣的是,所有延迟邮件(订单都放在不同的日子)都会立即进入。

听起来MTA只配置为每7天发送一次邮件(!)或出现问题,您的托管公司需要7天才能修复它。

  

他们说他们的网络没有发生延迟

找到新托管公司的时间。

下进行。

答案 1 :(得分:0)

电子邮件只是发送这样的信息的方式不是很可靠。

在所涉及的两台服务器之一上只有一些短期问题,这意味着尝试发送电子邮件遇到问题。

邮件服务器通常会在重试之前等待一段时间,(尽管我预计初始重试的时间会比6天短得多)。你可能会得到一点点的原因是所有的重试最终都会在一起完成。

它似乎有点奇怪,它会等待这么久才能重试。

您可能需要查看邮件服务器日志,看看他们是否在发送邮件时遇到任何问题。

答案 2 :(得分:0)

还有这个:

X-Virus-Scanned: by amavisd-new

这表明在最初接受邮件后至少还有一步。 amavis本身最有可能将邮件传递给ClamAV,Spamassassin等......其中任何一个都可能因某种原因引入延迟。

鉴于网络服务器SMTP上的8.13版本号,它很可能是Sendmail。如果您对服务器有任何访问权限,请检查带有“mailq”的外发邮件队列,如果您有权限,或让管理员为您执行此操作。由于延迟发生在服务器内的某个地方,在某些时候它应该被塞进sendmail的待处理队列中,并且还会附加延迟原因。