Intereting Posts
Что означают битовые флаги в mysqli, используя fetch_field_direct Какова наиболее масштабируемая структура каталогов на основе PHP для большого сайта? jquery autocomplete get id как выбранная метка как отображать несколько изображений (blob) из mysql с помощью php? Предотвращение тайм-аута шлюза nginx 504 с помощью PHP set_time_limit () Имеет ли php эквивалент виртуальной или виртуальной памяти python? Длительность звука HTML5 для mp3 всегда бесконечна Обнаружение мобильного или настольного браузера и перенаправление на соответствующую веб-страницу jqplot этикетка с надписью / легенда цвета и линии Теперь, как мне пройти аутентификацию в PHP SDK 3.0.0? Отладка 2 серверов с помощью Xdebug php одновременно php echo first row wait / sleep, тогда эхо вторая строка Доступ к PHP var из внешнего файла javascript Как сохранить строку, введенную в HTML-форму, в текстовый файл Предупреждение: mysqli_stmt_bind_param () ожидает, что параметр 1 будет mysqli_stmt, boolean задан в

PHP: помощь по почте PEAR

Я попробовал пакет почтовых груш. Он успешно отправляет электронное письмо, но дает мне следующую ошибку:

Strict Standards: Non-static method Mail::factory() should not be called statically, assuming $this from incompatible context in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ClientPortal\classes\SupportTickets.php on line 356 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Mail\smtp.php on line 365 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 386 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 391 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 398 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 441 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 230 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 445 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Mail\smtp.php on line 376 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 526 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 230 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 529 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 532 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 441 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 230 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 445 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 550 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 694 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 230 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 698 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 706 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 230 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 1017 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 415 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\PHP\PEAR\Net\SMTP.php on line 230 Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ClientPortal\classes\SupportTickets.php on line 364 Message successfully sent! 

Вот мой код:

 function submitTicket(){ $from = "Billy Jones <billy.jones@networkroi.co.uk>"; $to = "helpdesk <helpdesk@networkroi.co.uk>"; $subject = "Email Test!"; $body = "email test body"; $host = "***"; $username = "***"; $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>"); } } 

Может кто-нибудь помочь мне здесь?

Я задал тот же вопрос и нашел реальное решение (вместо маскировки ошибок). Прочтите ответ на вопрос ниже для получения более подробной информации, но в основном просто следуйте приведенным ниже трем изменениям.

Как не вызывать функцию статически в php?


Найдите php/pear/Mail.php , перейдите к строке 74 и измените:

 function &factory($driver, $params = array()) 

в

 static function &factory($driver, $params = array()) 

Также в php/pear/Mail.php перейдите к строке 253 и измените:

 $addresses = Mail_RFC822::parseAddressList($recipients, 'localhost', false); 

в

 $Mail_RFC822 = new Mail_RFC822(); $addresses = $Mail_RFC822->parseAddressList($recipients, 'localhost', false); 

Найдите php/pear/PEAR.php , перейдите к строке 250 и измените:

 function isError($data, $code = null) 

в

 static function isError($data, $code = null) 

Спасибо за Амаль за то, что он показал, как это исправить!

Строгие ошибки не мешают работе кода.

Просто установите для параметра сообщения об ошибках значение E_ALL & ~E_STRICT и они волшебным образом исчезнут.

 @require_once "Mail.php"; $headers = array ('From' => $from,'To' => $to,'Subject' => $subject); $smtp = @Mail::factory('smtp', array ('host' => $host,'port' => $port,'auth' => true, 'username' => $UName,'password' => $UPass)); $mail = @$smtp->send($to, $headers, $body); if (@PEAR::isError($mail)) { echo("<p>".$mail->getMessage()."</p>"); } else { echo("<p>Message successfully sent!</p>"); } 

Посмотрите: я использовал знак @ перед некоторыми переменными и методами. И таким образом вы можете отправлять электронную почту с помощью php5. Это старый подход, но он должен работать. Хотя вас могут спросить о включении ssl в конфигурации, но это кусок пирога. Наслаждаться. И, конечно же, с использованием SwiftMailer, но последняя и отличная техника.

Начиная с PHP 5, вызов нестатического метода другого класса из нестатического метода другого класса ist verboten под E_STRICT . Когда был PEAR_Mail пакет PEAR_Mail , это был несколько неясный метапрограммный хак в PHP. Таким образом, PEAR_Mail известен этим.

Метод PEAR::isError() вероятно, должен был быть статическим методом, но он не является и предполагает контекст экземпляра с большим количеством $this выбрано. PEAR_Mail называет его статически в пределах своего контекста экземпляра, поэтому PHP передает значение $this … Это все виды плохих новостей.

PEAR_Mail::factory() должен быть определен как static но не по причинам, известным только оригинальным авторам. Он ВСЕГДА будет генерировать предупреждающее сообщение «нестатический метод» до тех пор, пока код не будет исправлен.

Примечание: PEAR_Mail не был затронут с 2010 года. Пожалуйста, не используйте его …! Для альтернатив используйте Google, Люк!