【问题标题】:Laravel 4.2 Loging Mails from Swift MailerLaravel 4.2 从 Swift Mailer 记录邮件
【发布时间】:2015-12-09 19:28:04
【问题描述】:

在我的项目中,我需要记录从我的应用程序发送的每封邮件。

Mail::queue('email.template', $vars, function($message) {
    $message->to('someone', 'Her name')->subject("<3");
    LogModel::log($message);
});

在 LogModel 中

public static function log(Message $message) {
    $msg = $message->getSwiftMessage();
    $log = new self;

    $log->to = $msg->getTo();
    $log->subject = $msg->getSubject();
    $log->cc = $msg->getCc();
    $log->bcc = $msg->getBcc();
    $log->body = $msg->getBody();
    $log->headers = serialize($msg->getHeadres());

    $log->save();
}

所有吸气剂,这里返回Null
注意:我所有的消息都在这里签名。

如何访问这些值或记录邮件的最佳方式是什么?

【问题讨论】:

    标签: php logging laravel-4 swiftmailer


    【解决方案1】:

    我做了更多研究,发现这种非常灵活的技术可以记录所有邮件。

    无法通过该级别的 getter 读取使用队列发送的邮件的值,因为即使使用 sync 队列驱动程序也在延迟模式下准备工作。

    做到这一点的关键是事件订阅者。 Laravel 的默认邮件程序在发送消息之前触发 mailer.sending 事件。

    如果您使用第三方服务提供商注册邮件程序,请确保邮件程序构造函数获取第三个参数为$app['events'] 例如

    $mailer = new Mailer($app['view'], $app['swift.mailer'], $app['events']);
    

    在(应用程序/库)中创建事件订阅者类

    class MyEventHandler{
      public function onMailSent($message) {
        LogModel::log($message);
      }
    
      public function subscribe($events) {
        $events->listen('mailer.sending', 'MyEventHandler@onMailSent');
      }
    

    }

    在 global.php 中将该类注册为事件订阅者

    Event::subscribe(new MyEventHandler);
    

    最后是 LogModel

    public static function log($msg) {
        // if $msg is instance of Illuminate\Mail\Message
        $msg = $msg->getSwiftMessage();
        $log = new self;
    
        $to = array_keys($msg->getTo());        
        $log->to = array_shift($to);
        $log->subject = $msg->getSubject();
        $log->cc = $msg->getCc();
        $log->bcc = $msg->getBcc();
        $log->body = $msg->getBody();
        $log->headers = serialize($msg->getHeaders());
    
        $log->save();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 2015-12-17
      • 2016-01-07
      相关资源
      最近更新 更多