Viewing file: SwiftMailerHandler.php (1.87 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */
namespace Symfony\Bridge\Monolog\Handler;
use Monolog\Handler\SwiftMailerHandler as BaseSwiftMailerHandler; use Symfony\Component\HttpKernel\Event\PostResponseEvent;
/** * Extended SwiftMailerHandler that flushes mail queue if necessary * * @author Philipp Kräutli <pkraeutli@astina.ch> */ class SwiftMailerHandler extends BaseSwiftMailerHandler { protected $transport;
protected $instantFlush = false;
/** * @param \Swift_Transport $transport */ public function setTransport(\Swift_Transport $transport) { $this->transport = $transport; }
/** * After the kernel has been terminated we will always flush messages * * @param PostResponseEvent $event */ public function onKernelTerminate(PostResponseEvent $event) { $this->instantFlush = true; }
/** * {@inheritdoc} */ protected function send($content, array $records) { parent::send($content, $records);
if ($this->instantFlush) { $this->flushMemorySpool(); } }
/** * Flushes the mail queue if a memory spool is used */ private function flushMemorySpool() { $mailerTransport = $this->mailer->getTransport(); if (!$mailerTransport instanceof \Swift_Transport_SpoolTransport) { return; }
$spool = $mailerTransport->getSpool(); if (!$spool instanceof \Swift_MemorySpool) { return; }
if (null === $this->transport) { throw new \Exception('No transport available to flush mail queue'); }
$spool->flushQueue($this->transport); } }
|