phpmailer - 从命令行使用 php 运行 时出错

phpmailer - error when run from command line with php

我有一个奇怪的行为。我正在使用安装在 Win7 上的 xampp 和 PHPMailer class。 当我 运行 一个简单的 .php 脚本从浏览器发送邮件时,一切顺利,但如果我 运行 相同的脚本使用带 php 后缀的命令提示符 (c :....... php c:\xampp\htdocs......script.php) 我收到以下错误消息 "Helo command rejected: need fully-qualified hostname" 知道为什么吗?

我可以在 ECHLO 中看到,当从浏览器 运行 时,我得到了正确的服务器地址(我的主机名),但是当我从命令提示符访问脚本时,我得到的主机名是机器名。这可以从浏览器更改或设置为 运行 吗?我想这是问题所在,主机名。

谢谢

脚本很可能依赖于一些环境变量作为它自己的主机名,可能 $_SERVER['HTTP_HOST']。这将在您的网络服务器 运行 时设置,但不会通过命令行设置,因为它不是 HTTP 环境。

如果您启用完整的错误报告,您可能会在错误输出中看到类似这样的内容:

PHP Notice:  Undefined index: HTTP_HOST in script.php

您可以从命令行强制变量存在,如下所示:

HTTP_HOST=example.com php -f script.php

正如其他人所提到的,当您不在 HTTP 环境中时,如果您的主机名设置不正确,或者由于某种原因 PHP 无法使用,则可能难以获得HELO/EHLO 命令中使用的主机名。您可以通过设置 Hostname property:

来明确提供一个
$mail->Hostname = 'myserver.example.com';

请注意,这与 HostHelo 属性不同;请参阅文档了解差异。