PHP邮件正在挂起页面

PHP邮件正在挂起页面,php,sendmail,Php,Sendmail,我有一个奇怪的邮件问题。具体来说,我有一个脚本来检查请求头,如果它匹配某个字符串,它将使用mail()发送邮件。这是一个基本的邮件,有标准的“收件人”、“主题”、“内容”、“发件人”字段,没有其他内容 邮件确实可以正常发送,但它会导致页面加载挂起30多秒(即使mail()在生成的HTML之外),时间太长。我看到一些回复建议将邮件转储到数据库中并在其上运行cron作业,但在这种情况下,这并不是一个真正的选项 基本上,我想知道是否有一种方法可以在不使用mail()的情况下强制完成php脚本(页面加载

我有一个奇怪的邮件问题。具体来说,我有一个脚本来检查请求头,如果它匹配某个字符串,它将使用
mail()
发送邮件。这是一个基本的邮件,有标准的“收件人”、“主题”、“内容”、“发件人”字段,没有其他内容

邮件确实可以正常发送,但它会导致页面加载挂起30多秒(即使
mail()
在生成的HTML之外),时间太长。我看到一些回复建议将邮件转储到数据库中并在其上运行cron作业,但在这种情况下,这并不是一个真正的选项


基本上,我想知道是否有一种方法可以在不使用
mail()的情况下强制完成php脚本(页面加载)
正在完成或我应该检查的某些配置可能会导致此过程花费很长时间。

我曾经在RHEL 4服务器上遇到过类似的问题,并找到了两个有效的解决方案:使用PEAR邮件或使用外部smtp服务器(在我的情况下是gmail)。发送一份简单的联系方式从30-50秒缩短到不到一秒


我从来没有发现是什么原因造成的…

邮件()从来没有问题,我觉得它非常可靠。

  • 问题出现在所有电子邮件中还是特定电子邮件中
  • 您是否尝试在另一台服务器上测试代码
  • 在SMTP中使用
    PHPmailer()这是一个很好的教程


当我遇到类似问题时,它是由缺少规范主机名引起的

查看
/var/log/mail.err
:如果您看到

sendmail[31575]:无法限定我自己的域名(localhost)--使用短名称“

就这样

那么你需要:

  • 将主机名添加到
    /etc/hosts
    作为:
    your.ip.address.your.host.name
  • /etc/hostname
    中的主机名设置为:
    your.host.name
  • 重新启动

  • 问题出现在任何使用
    mail()
    函数的php创建的电子邮件中。至少可以说,服务器设置本身是“有趣的”,如果服务器限制是导致速度减慢的原因,我也不会感到惊讶。我不太愿意对服务器本身进行太多的返工,因为它将在4-6个月内被更换——这更像是一个“问题”“让这项工作暂时发挥作用”比其他任何事情都重要。