2013-12-17 37 views
0

我使用SwiftMailer發送電子郵件和我的網站是一下子有超時問題,試圖發送電子郵件時。檢索SMTP會話中SwiftMailer

我需要提取「SMTP會話」所以我的主機可以對其進行調試。

有什麼代碼可以給我這個嗎?

include('SwiftMailer/swift_required.php'); 
$transport = Swift_SmtpTransport::newInstance('smtp.example.com', 587); 
$transport->setUsername('username'); 
$transport->setPassword('password'); 
$swift = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = new Swift_Message($subject); 
$message->setFrom($from); 
$message->setBody($message, $content_type, SITE_CHARSET); 
$message->setTo($to); 

try { 
    $swift->send($message); 
} catch (Swift_TransportException $e) { 
    // Log array for further inspection 
} 

回答

1

你可能想看看SwiftMailer Logger Plugin,這將讓你記錄所有客戶端和SMTP服務器之間的交互。

沒有可用兩種類型的記錄器: - (。保持的陣列內的日誌消息的集合的陣列的內容可以被清除或傾倒出到屏幕)

  • ArrayLogger
  • EchoLogger (打印輸出到屏幕上實時得心應手非常基本的調試輸出。)

可以使用註冊的插件使用:

$logger = new Swift_Plugins_Loggers_ArrayLogger(); 
$swift->registerPlugin(new Swift_Plugins_LoggerPlugin($logger)); 

$logger = new Swift_Plugins_Loggers_EchoLogger(); 
$swift->registerPlugin(new Swift_Plugins_LoggerPlugin($logger)); 

只要確保你已經安裝了插件,您的類自動加載機可按需訪問所需的類。

有關更多詳細信息,請參閱文檔。

+0

這是偉大的,但記錄似乎並沒有給我的SMTP會話...比較什麼它給了我[本示例](http://www.earthinfo.org/example-smtp-conversation/)它是非常不同的。記錄器給我:'錯誤:++啓動Swift_SmtpTransport!無法與主機smtp.example.com建立連接[連接超時#110]' –

+0

哦。那麼在這種情況下,您可以安全地假設您的SMTP主機名或端口無效(或無法訪問)。當連接失敗時,無論如何你都不會看到太多的SMTP對話。試着弄清楚爲什麼它不起作用。檢查SMTP服務器是否有更改。另請參閱您是否可以通過telnet手動連接(如果無法正常工作,請查看是否存在您正在處理的防火牆問題)。 – SquareCat

+0

謝謝@SquareCat。原來是某種連接擁塞,最終在約24小時後自行排除。記錄器雖然有幫助,並感謝您的幫助分享:) –