2 namespace Mogic\Extname;
\r
4 use \TYPO3\CMS\Core\Log\LogLevel;
\r
5 use \TYPO3\CMS\Core\Utility\GeneralUtility;
\r
8 * Log all mails sent via the TYPO3 Mailer
\r
10 * @author Christian Weiske <weiske@mogic.com>
\r
12 class MailLogger implements \Swift_Events_SendListener
\r
15 * The Mailer class has just been initialized (__construct)
\r
17 * @param object $mailer TYPO3 mailer instance
\r
21 public function postInitializeMailer(\TYPO3\CMS\Core\Mail\Mailer $mailer)
\r
23 $mailer->registerPlugin($this);
\r
27 * Invoked immediately before the Message is sent.
\r
29 * @param Swift_Events_SendEvent $evt Event to handle
\r
33 public function beforeSendPerformed(\Swift_Events_SendEvent $evt)
\r
38 * Invoked immediately after the Message is sent.
\r
40 * @param Swift_Events_SendEvent $evt Event to handle
\r
44 public function sendPerformed(\Swift_Events_SendEvent $evt)
\r
46 $level = LogLevel::INFO;
\r
47 switch ($evt->getResult()) {
\r
48 case \Swift_Events_SendEvent::RESULT_PENDING:
\r
49 $status = 'pending';
\r
51 case \Swift_Events_SendEvent::RESULT_SPOOLED:
\r
52 $status = 'spooled';
\r
54 case \Swift_Events_SendEvent::RESULT_SUCCESS:
\r
55 $status = 'success';
\r
57 case \Swift_Events_SendEvent::RESULT_TENTATIVE:
\r
58 $status = 'some failures';
\r
59 $level = LogLevel::ERROR;
\r
61 case \Swift_Events_SendEvent::RESULT_FAILED:
\r
63 $level = LogLevel::ERROR;
\r
67 $failed = $evt->getFailedRecipients();
\r
69 $to = $evt->getMessage()->getTo();
\r
71 $message = 'Mail sent:'
\r
72 . ' status=' . $status
\r
73 . ' to ' . implode(',', array_keys($to));
\r
74 if (count($failed)) {
\r
75 $message .= ' failed: ' . implode(',', $failed);
\r
78 /* @var $logger \TYPO3\CMS\Core\Log\Logger */
\r
79 $logger = GeneralUtility::makeInstance('TYPO3\CMS\Core\Log\LogManager')
\r
80 ->getLogger(__CLASS__);
\r
81 $logger->log($level, $message);
\r