【发布时间】: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