Add debug mode back to mailer

This re-adds the debug mode for the mailer which will log the whole SMTP traffic within the log file if enabled.
This commit is contained in:
Lukas Reschke 2015-03-17 19:41:13 +01:00
parent ebb834d879
commit aea4b3166b
1 changed files with 16 additions and 1 deletions

View File

@ -73,15 +73,30 @@ class Mailer implements IMailer {
* has been supplied.)
*/
public function send(Message $message) {
$debugMode = $this->config->getSystemValue('mail_smtpdebug', false);
if (sizeof($message->getFrom()) === 0) {
$message->setFrom([\OCP\Util::getDefaultEmailAddress($this->defaults->getName())]);
}
$failedRecipients = [];
$this->getInstance()->send($message->getSwiftMessage(), $failedRecipients);
$mailer = $this->getInstance();
// Enable logger if debug mode is enabled
if($debugMode) {
$mailLogger = new \Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($mailLogger));
}
$mailer->send($message->getSwiftMessage(), $failedRecipients);
// Debugging logging
$logMessage = sprintf('Sent mail to "%s" with subject "%s"', print_r($message->getTo(), true), $message->getSubject());
$this->logger->debug($logMessage, ['app' => 'core']);
if($debugMode && isset($mailLogger)) {
$this->logger->debug($mailLogger->dump(), ['app' => 'core']);
}
return $failedRecipients;
}