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