当使用PEAR Mail扩展时,可以让PHP忽略静态方法错误吗?


Can one make PHP ignore static method errors when using PEAR Mail extension?

我正在使用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,您可以…

  1. 创建要使用的邮件对象,例如

    $mail = new Mail;
    $smtp = $mail->factory(...
    

  2. 禁用E_STRICT错误

    error_reporting(E_ALL ^ E_STRICT);
    

如果您坚持使用PEAR,后者可能是更可取的,因为内部静态调用其他非静态方法。