2013-09-22 3 views
4

Я пытаюсь отправить электронное письмо через PHP с помощью PEAR Mail, но, несмотря на то, что страница сообщает о том, что почта отправлена, она никогда не приходит (я отправляю ее для тестирования) ,PEAR Mail не отправляет, но также не сообщает об ошибке

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

Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in Blah Blah Blah! on line 450 

Strict Standards: Non-static method PEAR::raiseError() should not be called statically, assuming $this from incompatible context in Blah Blah Blah! on line 451 

В моем чтении я сказала, что эти ошибки не остановить сценарий от успеха и что большинство людей просто оставляют строгие отчеты, однако в моем случае скрипт не работает.

Я попытался следующие методы, чтобы поймать ошибку ...

try { 
$host = "ssl://mail.example.com"; 
$port = 25; 
$auth = true; // turn on SMTP authentication 
$username = "[email protected]"; // SMTP username 
$password = "password"; // SMTP password 

$mail = Mail::factory('smtp', 
     array('host'=>$host,'port'=>$port,'auth'=>true,'username'=>$username,'password'=>$password)); 
$mail->send($to,$headers,$message); 
} catch (Exception $e) { 
echo "Exception: " . $e->getMessage(); 
} 
echo "Message Successfully Sent!"; 

А также без попытке поймать и просто используя ...

if (PEAR::isError($mail)) { 
echo("<p>" . $mail->getMessage() . "</p>"); 
} else { 
echo("<p>Message successfully sent!</p>"); 
} 

В обоих случаях отчеты страница " Электронная почта успешно отправлена! " но почта не поступает. Если я целенаправленно загружаю неверный пользователь и пароль или вымышленный почтовый сервер, об ошибке не сообщается.

Как я могу проверить ошибку в этом случае и почему сценарий все еще работает, если я дам ему очевидную ошибку?

Благодаря Грег

+1

Что скажет почтовый журнал? –

+0

Вы имеете в виду журнал ошибок для почтового сервера или что-то еще? У меня нет доступа к журналам почтового сервера. – Barbs

ответ

6

Дагон,

Спасибо за указание мне в правильном направлении. При дальнейшем поиске я нашел, как установить $ params ['debug'], и это приведет меня к источнику проблемы.

Таким образом, ответ для тех, кто пытается найти способ отладки их отправку почты попыток ...

$params = array('debug'=>true,'host'=>$host,'port'=>$port,'auth'=>true,'username'=>$username,'password'=>$password); 
$mail = Mail::factory('smtp', $params); 
$mail->send($to,$headers,$message); 

Это будет отображать ответы соединения почты и все содержимое отправляется на почтовый сервер для отладки ,

Смежные вопросы