我遇到了this question提出的非常类似的问题,不幸的是,该帖子中的答案对我没有帮助。
$mail = Mail::factory('smtp', $params);
之后似乎没有任何事情发生。
在输出任何内容之后没有任何echo语句或错误检查,就好像当脚本到达脚本刚刚停止的Mail::factory
行时。
脚本本身返回HTTP 200,但未发送邮件或返回脚本生成的任何已发送/未发送的响应。
我尝试卸载/重新安装PEAR Mail,Net和Auth库,但问题仍然存在。
我也尝试直接从命令行
在服务器上运行脚本就好像调用Mail::factory
后脚本停止处理一样,没有错误返回,所以我不知道从哪里开始寻找修复。
我还通过PHP CLI在服务器上直接运行脚本:
它输出所有内容,直到Mail::factory
调用,之后没有任何内容。
D:\ Parallels \ Additional \ PleskPHP5> php phpmailcheck.php
安装了PEAR!
安装了PEAR邮件!
打电话给Mail :: factory
d:\的Parallels \附加\ PleskPHP5>
我还检查了网站错误日志,并且没有报告错误。
更新:
我在Mail::factory
来电之前尝试添加以下内容:echo(Mail::factory('smtp', $params));
来自pear邮件文档说它应该返回一个对象或错误消息。
脚本似乎在这条线上结束而没有回应任何东西......
<?php
require_once('D:\Parallels\Additional\PleskPHP5\Pear\System.php');
require_once "Mail.php";
if(class_exists('System')===true) {
echo '<p>PEAR is installed!</p>';
} else {
echo '<p>PEAR is not installed!</p>';
}
if(class_exists('Mail')===true) {
echo '<p>PEAR Mail is installed!</p>';
} else {
echo '<p>PEAR Mail is not installed!</p>';
}
//start mail
$from = "My Website <webmailer@website.co.uk>";
$to = "Website Owner <email@emailaddress.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?<br>This is a test email for pear";
$host = "mail.mailserver.co.uk";
$port = 25;
$username = "website@website.co.uk";
$password = "password";
$params = array('host'=>$host,'port'=>$port,'auth'=>true,'username'=>$username,'password'=>$password);
$headers = array (
'From' => $from,
'To' => $to,
'Subject' => $subject
);
echo('going to call Mail::factory'); //echos out correctly
$mail = Mail::factory('smtp', $params);
echo('just called Mail::factory'); // does not echo
$mail->send($to,$headers,$message);
//$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>
答案 0 :(得分:1)
首先,检查退出状态:
$ php mailcheck.php; echo $?
或在Windows上:
$ php mailcheck.php
$ echo Exit Code is %errorlevel%
将是&gt;如果php代码中有致命错误,则为0。
然后确保您display_errors
开启,error_reporting
设置为正确的级别。如果不这样做,您将看不到任何输出。如果您安装了xdebug,请启用xdebug.scream
。
由于您的退出代码为255,因此您的php文件会出现问题。
首先,使用ini_set
将display_errors设置为1,将error_reporting设置为E_ALL。再次运行代码。
如果没有,请通过运行
确保代码在语法上正确$ php -l path/to/file.php
它会告诉您何时出现语法错误。对所有文件执行此操作。