【问题标题】:PHP sendmail_path does not workPHP sendmail_path 不起作用
【发布时间】:2014-04-15 08:06:28
【问题描述】:

我有一个安装了 PHP 5.24 的 Windows 2003 服务器。

我在 Internet 上阅读了几篇文章(包括 PHP 手册页),其中说 php.ini 中的 sendmail_path 可以设置为使用诸如 Fake Sendmail 之类的程序,该程序能够将邮件文件推送到我的 MDaemon 拾取器目录。我已下载该程序并尝试使用它。

问题是 sendmail.exe 永远不会被执行。

sendmail_path = c:\SendMail\sendmail.exe

为了验证它,我设置了一个简单的批处理文件,在执行时写入 test.log,并将 sendmail_path 更改为指向批处理文件。我验证了批处理文件在从命令行运行时确实创建了我的测试文件,但是当我尝试发送邮件时,该文件没有被创建。

sendmail_path = c:\SendMail\test.bat

批处理文件永远不会被调用。

我尝试了许多不同的方法,例如在 c: 根目录和 PHP 程序文件夹的 /usr/lib/sendmail 路径中创建 sendmail.exe,但似乎无法强制 PHP 使用我的文件.

我也尝试将路径名放在单引号和双引号中,但没有任何效果。

在我的 PHP 邮件测试中,我收到一条失败的消息,并且我的 PHP 日志文件显示了要传递的邮件尝试,所以我知道正在调用邮件进程。

寻找一些关于下一步尝试的建议。

放弃尝试重定向 PHP 邮件,只是将我的服务器 SMTP 设置配置为接受它。虽然我想让我的 MDaemon 邮件服务器处理工作负载,但这种方法足以满足它的有限使用。

【问题讨论】:

  • 您在更改 ini 文件后是否重新启动了网络服务器?
  • 是和否。我尝试重新启动几次但没有效果。然后我更改了 php.ini 文件以使用不同的日志文件名称,并发现它无需重新启动 Web 服务器即可使用,所以我认为我不必关闭我的网站来测试 sendmail_path。
  • 重新配置我的 SMTP 服务器后,我确实必须重新启动 IIS,所以您是正确的,需要重新启动服务。
  • 你解决了这个问题吗?尝试将暂停命令作为批处理文件的第一行。这应该可以让您查看它是否正在启动。如果没有,请尝试sendmail_path = c:\windows\system32\cmd.exe /c "c:\SendMail\test.bat"
  • 不,我放弃了。它似乎不尊重 sendmail_path 因为批处理文件从未执行过。如果有,它会保存一个临时文件,该文件会提醒我它运行了。不管我在路径语句中放了什么,它都被忽略了。

标签: php windows email batch-file sendmail.exe


【解决方案1】:

您在 php.ini 中有语法错误!只需将 php.ini-development 复制到 php.ini 并设置:

SMTP = 
sendmail_from = 
sendmail_path = "c:\SendMail\sendmail.exe -t"

或者修复 php.ini 中的错误。享受

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2012-08-30
    • 2017-05-14
    • 2017-03-11
    相关资源
    最近更新 更多