【发布时间】:2014-04-18 09:52:35
【问题描述】:
我遇到了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 已安装!
要调用 Mail::factory
D:\Parallels\附加\PleskPHP5>
我还检查了网站错误日志,没有报告错误。
更新:
我尝试在 Mail::factory 调用之前添加以下内容:echo(Mail::factory('smtp', $params));
从梨邮件文档中说它应该返回一个对象或错误消息。
脚本似乎在这一行结束,没有回显任何内容......
<?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>");
}
?>
【问题讨论】:
-
你确定它挂了?也许它只是在死去。您是否检查过服务器错误日志和/或打开 display_errors/error_reporting?
-
php cli 的输出是:D:\Parallels\Additional\PleskPHP5>php phpmailcheck.php
PEAR 已安装!
PEAR Mail 已安装!
将调用 Mail::factory D:\Parallels\Additional\PleskPHP5> 所以在 mailfactory 似乎被处理后什么都没有我有 error_reporting(E_ALL);设置 -
抱歉,@halfer 有一个实例我未能将
Mail的类名大写,尽管感谢您的宝贵意见,它对我很有帮助。 -
没问题@Dizzy,这个地方有时可以提供火的洗礼!