我的行为很奇怪。我正在使用Win7和PHPMailer类上安装的xampp。 当我运行一个简单的.php脚本从浏览器发送邮件时,一切正常,但是如果我使用命令提示符和php sufix(c:..... php c:\ xampp \ htdocs ... ... script.php)我收到以下错误消息 “ Helo命令被拒绝:需要标准主机名” 有什么想法吗?
我可以在ECHLO中看到,从浏览器运行时,我获得了正确的服务器地址(我的主机名),但是当我从命令promt访问脚本时,我获得了作为主机名的计算机名。可以更改它或将其设置为像在浏览器中一样运行吗?我想这就是问题所在,主机名。
谢谢
答案 0 :(得分:1)
就像其他人提到的那样,当您不在HTTP环境中,并且如果主机名设置不正确,或者由于某种原因PHP无法使用您的主机名时,可能很难获得HELO中使用的主机名/ EHLO命令。您可以通过设置Hostname
property来明确提供一个:
$mail->Hostname = 'myserver.example.com';
请注意,这与Host
和Helo
属性不同;有关差异,请参阅文档。
答案 1 :(得分:0)
该脚本很可能依赖于某个环境变量来用作其自己的主机名,可能是$_SERVER['HTTP_HOST']
。在您的网络服务器上运行时会设置此设置,但由于不是HTTP环境,因此不能通过命令行运行。
如果启用完整的错误报告,则错误输出中可能会显示以下内容:
PHP Notice: Undefined index: HTTP_HOST in script.php
您可以强制变量在命令行中存在,如下所示:
HTTP_HOST=example.com php -f script.php