3

我在我的本地机器和办公室的服务器上运行 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()显示加载了哪个配置文件,我编辑了正确的。它现在正在工作!感谢大家的帮助。

4

3 回答 3

2

您应该phpinfo()在页面中添加调用,并检查:

  • 您的 PHP 脚本使用了正确的php.ini
  • 检查SMTPini 设置(如 phpinfo 表中所示)是否正确。
于 2009-08-14T01:46:29.420 回答
1

尝试在服务器上的代码中使用它:

ini_set("SMTP","smtp.example.com" );
ini_set('sendmail_from', 'user@example.com'); 
于 2009-08-13T22:19:48.800 回答
0

我也必须这样做 - 你需要发送 sendmail.ini:

您的 sendmail.ini 应位于 C:\xampp\sendmail\sendmail.ini。

您只需要在这里关注 3 个变量:

1.smtp_server
2.auth_username
3.auth_password

详细信息在这里:发送邮件和xampp

比尔 H

于 2009-08-14T01:35:34.617 回答