Skip to content

Commit b985a11

Browse files
authored
Merge pull request #56934 from nextcloud/backport/56862/stable31
[stable31] fix(settings): Improve mail test error handling and logging
2 parents 82c173b + bb40529 commit b985a11

File tree

8 files changed

+24
-6
lines changed

8 files changed

+24
-6
lines changed

apps/settings/css/settings.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/settings/css/settings.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/settings/css/settings.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,3 +890,12 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
890890
opacity: 1;
891891
}
892892
}
893+
894+
#sendtestmail_msg {
895+
&.error {
896+
display: inline-block;
897+
margin-top: 5px;
898+
border-radius: var(--border-radius);
899+
padding: 5px 10px;
900+
}
901+
}

apps/settings/lib/Controller/MailSettingsController.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use OCP\IURLGenerator;
1919
use OCP\IUserSession;
2020
use OCP\Mail\IMailer;
21+
use Psr\Log\LoggerInterface;
2122

2223
class MailSettingsController extends Controller {
2324

@@ -38,6 +39,7 @@ public function __construct(
3839
private IUserSession $userSession,
3940
private IURLGenerator $urlGenerator,
4041
private IMailer $mailer,
42+
private LoggerInterface $logger,
4143
) {
4244
parent::__construct($appName, $request);
4345
}
@@ -144,11 +146,13 @@ public function sendTestMail() {
144146
return new DataResponse();
145147
} catch (\Exception $e) {
146148
$this->config->setAppValue('core', 'emailTestSuccessful', '0');
149+
$this->logger->error('Failed sending test email: ' . $e->getMessage(), ['exception' => $e]);
147150
return new DataResponse($this->l10n->t('A problem occurred while sending the email. Please revise your settings. (Error: %s)', [$e->getMessage()]), Http::STATUS_BAD_REQUEST);
148151
}
149152
}
150153

151154
$this->config->setAppValue('core', 'emailTestSuccessful', '0');
155+
$this->logger->error('Failed sending test email: User ' . $this->userSession->getUser()->getUID() . ' has no email address configured in their account settings');
152156
return new DataResponse($this->l10n->t('You need to set your account email before being able to send test emails. Go to %s for that.', [$this->urlGenerator->linkToRouteAbsolute('settings.PersonalSettings.index')]), Http::STATUS_BAD_REQUEST);
153157
}
154158
}

apps/settings/src/admin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ window.addEventListener('DOMContentLoaded', () => {
8989
.then(() => {
9090
OC.msg.finishedSuccess('#sendtestmail_msg', t('settings', 'Email sent'))
9191
}).catch((error) => {
92-
OC.msg.finishedError('#sendtestmail_msg', error)
92+
OC.msg.finishedError('#sendtestmail_msg', error.response.data)
9393
})
9494
})
9595

apps/settings/tests/Controller/MailSettingsControllerTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use OCP\IUserSession;
1717
use OCP\Mail\IEMailTemplate;
1818
use OCP\Mail\IMailer;
19+
use Psr\Log\LoggerInterface;
1920

2021
/**
2122
* @package Tests\Settings\Controller
@@ -32,6 +33,8 @@ class MailSettingsControllerTest extends \Test\TestCase {
3233
private $l;
3334
/** @var IURLGenerator */
3435
private $urlGenerator;
36+
/** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
37+
private $logger;
3538

3639
/** @var MailSettingsController */
3740
private $mailController;
@@ -44,6 +47,7 @@ protected function setUp(): void {
4447
$this->userSession = $this->createMock(IUserSession::class);
4548
$this->mailer = $this->createMock(IMailer::class);
4649
$this->urlGenerator = $this->createMock(IURLGenerator::class);
50+
$this->logger = $this->createMock(LoggerInterface::class);
4751
/** @var IRequest|\PHPUnit\Framework\MockObject\MockObject $request */
4852
$request = $this->createMock(IRequest::class);
4953
$this->mailController = new MailSettingsController(
@@ -54,6 +58,7 @@ protected function setUp(): void {
5458
$this->userSession,
5559
$this->urlGenerator,
5660
$this->mailer,
61+
$this->logger,
5762
5863
);
5964
}

dist/settings-legacy-admin.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/settings-legacy-admin.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)