我正在使用PHP 5的PEAR邮件扩展。我发送邮件有困难,因为它返回这个错误:Non-static method Mail::factory() should not be called statically
.
这是我的代码:
$from = "Stephen <stephen@gmail.com>";
$to = "helper <helperjohn@gmail.com>";
$subject = "Email Test!";
$body = "email test body";
$host = "smtp.nvrforget.com";
$username = "username@nvrforget.com";
$password = "*************";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'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>");
}
我没有收到邮件。
如果可以的话,我会使用Swiftmailer,但是我的主机不允许。
由于PEAR仍然支持PHP4,您可以…
-
创建要使用的邮件对象,例如
$mail = new Mail; $smtp = $mail->factory(...
或
-
禁用
E_STRICT
错误error_reporting(E_ALL ^ E_STRICT);
如果您坚持使用PEAR,后者可能是更可取的,因为内部静态调用其他非静态方法。