我使用
swiftmailer从我的symfony2.2项目发送邮件.有没有办法在全球范围内记录所有电子邮件信息并发送结果?
如果mailer send()方法具有触发somę事件,那将是很好的,但我看不到它.
服务:
class MessageFileLogger implements Swift_Events_SendListener
{
private $filename;
public function __construct($filename)
{
$this->filename = $filename;
}
public function getMessages()
{
return $this->read();
}
public function clear()
{
$this->write(array());
}
public function beforeSendPerformed(Swift_Events_SendEvent $evt)
{
$messages = $this->read();
$messages[] = clone $evt->getMessage();
$this->write($messages);
}
public function sendPerformed(Swift_Events_SendEvent $evt)
{
}
private function read()
{
if (!file_exists($this->filename)) {
return array();
}
return (array) unserialize(file_get_contents($this->filename));
}
private function write(array $messages)
{
file_put_contents($this->filename,serialize($messages));
}
}
配置:
services:
umpirsky.mailer.message_file_logger:
class: MessageFileLogger
arguments:
- %kernel.logs_dir%/mailer.log
tags:
- { name: swiftmailer.plugin }