我在我的本地机器和办公室的服务器上运行 XAMPP。两者都是 Windows 机器。
我正在编写一些用于mail()
从表单发送电子邮件的代码。默认情况下,它使用sendmail.exe
(XAMPP 附带)发送电子邮件。在所有情况下,邮件实际上是通过第三台机器(即 Exchange 服务器)发送的。
在我的本地机器上,PHP 可以很好地发送邮件。在服务器上,提交表单后,我收到此错误:
警告:mail() [function.mail]:无法在“localhost”端口 25 连接到邮件服务器,请验证 php.ini 中的“SMTP”和“smtp___port”设置或使用 ini_set()
...后跟我的文件名。
我不明白为什么它引用“localhost”。在 php.ini 或 sendmail.ini 中没有使用“localhost” - 我使用邮件服务器的名称。两台机器上使用的 SMTP 信息是相同的。
据我所知,这两个环境具有所有重要的共同点:
- php.ini 文件是相同的
- sendmail.ini 文件是相同的
- 两台机器都安装了相同版本的 XAMPP
- 相同的批处理脚本将在两台机器上运行并成功发送电子邮件
sendmail.exe
我已经多次停止并启动 Apache 以确保它使用更新的配置文件。
当我收到上述错误时,我注意到 sendmail.exe 没有生成任何日志文件,这让我认为它永远不会运行。
我错过了什么?
解决了
我的问题是我认为它正在使用c:\xampp\php\php.ini
,但它实际上正在使用c:\xampp\apache\bin\php.ini
。这应该很明显,并且我之前在本地计算机上编辑了正确的文件,但是在服务器上进行更改时不知何故我感到困惑。
使用php_info()
显示加载了哪个配置文件,我编辑了正确的。它现在正在工作!感谢大家的帮助。