【发布时间】:2012-01-07 00:37:16
【问题描述】:
我正在尝试使用 php 脚本发送电子邮件,但我收到错误这是我的代码。我正在使用 xampp netbeans 和 windows。我在 php.ini 文件中包含了 pear,但仍然有错误任何想法
require_once "Mail.php";
$from = "onlinebookstorb@gmail.com";
$to = "'$email'";
$subject = "Online book store information";
$body = "This is your Id '$userID' click <a href =../index.php > here </a> to change to go to the website "; //todo change URL to make it work when it is online
$host = "ssl://smtp.gmail.com";
$port = "993";
$host = "smtp.gmail.com";
$username = "onlinebookstoreb@gmail.com";
$password = "";
$headers = array('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp', array('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
这是我得到的错误:
严格标准:非静态方法 Mail::factory() 不应在第 85 行的 C:\xampp\htdocs\OnlineBookStore\Store\Register.php 中静态调用
严格标准:不应静态调用非静态方法 PEAR::isError(),假设 $this 来自第 365 行 C:\xampp\php\PEAR\Mail\smtp.php 中的不兼容上下文
严格标准:不应静态调用非静态方法 PEAR::isError(),假设 $this 来自第 450 行 C:\xampp\php\PEAR\Net\SMTP.php 中的不兼容上下文
严格标准:不应静态调用非静态方法 PEAR::isError(),假设 $this 来自第 467 行 C:\xampp\php\PEAR\Net\SMTP.php 中的不兼容上下文
【问题讨论】:
-
如果您尝试,第一个警告是否会消失:
$smtp =& Mail::factory(...);另请参阅此帖子中有关 PEAR mail help 的 cmets -
不,它仍然是相同的错误列表,我检查了 php.ini 和 E_STRICT,它适用于所有人
-
将 error_reporting 更改为
E_ALL ^ E_STRICT应该可以修复警告。您可以在该脚本的开头使用error_reporting(E_ALL ^ E_STRICT);来仅更改该特定代码的错误报告。只是 PEAR 邮件类没有针对 PHP5 OOP 完全更新。它应该是public static function factory()而不是 Mail.php 中定义的function &factory( -
你能具体说明我应该在 php.ini 中更改什么吗?使用当前的 error_reporting() 评估表达式。如果需要,请设置为 true 或其他内容
-
在 php.ini 中,您可以将错误报告设置为
error_reporting = E_ALL ^ E_STRICT或直接保留 php.ini 并在 Register.php 的顶部添加error_reporting(E_ALL ^ E_STRICT);。