Можно ли заставить PHP игнорировать статические ошибки метода при использовании расширения PEAR Mail? - PullRequest
3 голосов
/ 01 сентября 2011

Я использую расширение PEAR Mail для PHP 5. У меня проблемы с отправкой почты, потому что она возвращает эту ошибку: 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, если бы мог, но мой веб-хост не позволяет мне.

1 Ответ

5 голосов
/ 01 сентября 2011

Поскольку PEAR все еще поддерживает PHP4, вы можете либо ...

  1. Создать почтовый объект для использования, например

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

    или

  2. Отключить E_STRICT ошибки

    error_reporting(E_ALL ^ E_STRICT);
    

Если вы настаиваете на использовании PEAR, последнее может быть предпочтительнее из-за внутренних статических вызовов других нестатических методов.

...