在SwiftMailer中检索SMTP会话

时间:2013-12-17 17:36:40

标签: php swiftmailer

我正在使用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
}

2 个答案:

答案 0 :(得分: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));

只需确保已安装插件,并且您的类自动加载器可以按需访问所需的类。

有关详细信息,请参阅文档。

答案 1 :(得分:0)

Laravel示例 转储对话以记录:

$content = 'Test';
$title = 'Test now()= ' . date("Y-m-d",time());                
$logger = new \Swift_Plugins_Loggers_ArrayLogger();
Mail::getSwiftMailer()->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger));
Mail::send('emails.send', ['title' => $title, 'content' => $content], function ($message){
 $message->from('fromuser@mydomain.com');
 $message->to('touser@mydomain.com');
});
Log::info($logger->dump());

然后在\ resources \ emails上发送send.blade.php

<html>
<head></head>
<body style="background: orange; color: white">
<h1>{{$title}}</h1>
<p>{{$content}}</p>

AGARCIA - 2018
</body>
</html>