From e32f1582c76252ae80802c0851a9583504131dff Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Thu, 19 Feb 2015 21:55:02 +0100 Subject: [PATCH] Show more detailed error message --- lib/private/mail/mailer.php | 1 + .../controller/mailsettingscontroller.php | 24 +++++++++---------- tests/lib/mail/mailer.php | 23 ------------------ .../controller/mailsettingscontrollertest.php | 3 +++ 4 files changed, 16 insertions(+), 35 deletions(-) diff --git a/lib/private/mail/mailer.php b/lib/private/mail/mailer.php index 92e6b91ce1..83dd050edb 100644 --- a/lib/private/mail/mailer.php +++ b/lib/private/mail/mailer.php @@ -149,6 +149,7 @@ class Mailer implements IMailer { if (!empty($smtpSecurity)) { $transport->setEncryption($smtpSecurity); } + $transport->start(); return $transport; } diff --git a/settings/controller/mailsettingscontroller.php b/settings/controller/mailsettingscontroller.php index 43715b8223..53365cf253 100644 --- a/settings/controller/mailsettingscontroller.php +++ b/settings/controller/mailsettingscontroller.php @@ -135,19 +135,19 @@ class MailSettingsController extends Controller { $email = $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'email', ''); if (!empty($email)) { try { - $this->mail->send($email, $this->userSession->getUser()->getDisplayName(), - $this->l10n->t('test email settings'), - $this->l10n->t('If you received this email, the settings seem to be correct.'), - $this->defaultMailAddress, - $this->defaults->getName() - ); + $message = $this->mailer->createMessage(); + $message->setTo([$email => $this->userSession->getUser()->getDisplayName()]); + $message->setFrom([$this->defaultMailAddress]); + $message->setSubject($this->l10n->t('test email settings')); + $message->setPlainBody('If you received this email, the settings seem to be correct.'); + $this->mailer->send($message); } catch (\Exception $e) { - return array('data' => - array('message' => - (string) $this->l10n->t('A problem occurred while sending the email. Please revise your settings.'), - ), - 'status' => 'error' - ); + return [ + 'data' => [ + 'message' => (string) $this->l10n->t('A problem occurred while sending the email. Please revise your settings. (Error: %s)', [$e->getMessage()]), + ], + 'status' => 'error', + ]; } return array('data' => diff --git a/tests/lib/mail/mailer.php b/tests/lib/mail/mailer.php index 2cb4c5cfde..8929bfdf99 100644 --- a/tests/lib/mail/mailer.php +++ b/tests/lib/mail/mailer.php @@ -53,20 +53,6 @@ class MailerTest extends TestCase { $this->assertEquals(\Swift_SendmailTransport::newInstance('/var/qmail/bin/sendmail -bs'), \Test_Helper::invokePrivate($this->mailer, 'getSendMailInstance')); } - public function testGetSmtpInstanceDefaults() { - $expected = \Swift_SmtpTransport::newInstance(); - $expected->setHost('127.0.0.1'); - $expected->setTimeout(10); - $expected->setPort(25); - - $this->config - ->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnArgument(1)); - - $this->assertEquals($expected, \Test_Helper::invokePrivate($this->mailer, 'getSmtpInstance')); - } - public function testGetInstanceDefault() { $this->assertInstanceOf('\Swift_MailTransport', \Test_Helper::invokePrivate($this->mailer, 'getInstance')); } @@ -80,15 +66,6 @@ class MailerTest extends TestCase { $this->assertInstanceOf('\Swift_MailTransport', \Test_Helper::invokePrivate($this->mailer, 'getInstance')); } - public function testGetInstanceSmtp() { - $this->config - ->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue('smtp')); - - $this->assertInstanceOf('\Swift_SmtpTransport', \Test_Helper::invokePrivate($this->mailer, 'getInstance')); - } - public function testGetInstanceSendmail() { $this->config ->expects($this->any()) diff --git a/tests/settings/controller/mailsettingscontrollertest.php b/tests/settings/controller/mailsettingscontrollertest.php index 84432f656b..cc25fda52f 100644 --- a/tests/settings/controller/mailsettingscontrollertest.php +++ b/tests/settings/controller/mailsettingscontrollertest.php @@ -32,6 +32,9 @@ class MailSettingsControllerTest extends \Test\TestCase { ->disableOriginalConstructor()->getMock(); $this->container['MailMessage'] = $this->getMockBuilder('\OCP\Mail\IMessage') ->disableOriginalConstructor()->getMock(); + $this->container['Mailer'] = $this->getMockBuilder('\OC\Mail\Mailer') + ->setMethods(['send']) + ->disableOriginalConstructor()->getMock(); $this->container['Defaults'] = $this->getMockBuilder('\OC_Defaults') ->disableOriginalConstructor()->getMock(); $this->container['DefaultMailAddress'] = 'no-reply@owncloud.com';