2013-09-22 63 views
4

我想通過使用PEAR郵件的PHP發送電子郵件,但雖然該頁面報告郵件已發送,它永遠不會到達(我發送給自己進行測試) 。PEAR郵件不發送,但也沒有報告錯誤

我一直在研究如何處理錯誤,如果我把嚴格的報告上,我得到的這些半打報道:

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

郵件日誌說什麼? – 2013-09-22 10:24:24

+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); 

這將顯示郵件連接響應,所有的內容發送到郵件服務器進行調試。

相關問題