diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2019-01-30 20:05:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-30 20:05:23 +0100 |
commit | 85d6d7b87c82bfed9f1a494d55074daff0e2e3ee (patch) | |
tree | 6784ac5544fbdf6337bc8d4a057e56e272b8ad79 /lib/private | |
parent | be6475784ae39880ce4d2f338bcd8f40c2a4b082 (diff) | |
parent | 7e3e3bed5048940033494d6179527b8b3112e15f (diff) | |
download | nextcloud-server-85d6d7b87c82bfed9f1a494d55074daff0e2e3ee.tar.gz nextcloud-server-85d6d7b87c82bfed9f1a494d55074daff0e2e3ee.zip |
Merge pull request #12636 from nextcloud/fix-12597
handle mail send error gracefully
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Share20/Manager.php | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index e76269f9d86..b04f1acbd87 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -692,15 +692,15 @@ class Manager implements IManager { $emailAddress, $share->getExpirationDate() ); - $this->logger->debug('Send share notification to ' . $emailAddress . ' for share with ID ' . $share->getId(), ['app' => 'share']); + $this->logger->debug('Sent share notification to ' . $emailAddress . ' for share with ID ' . $share->getId(), ['app' => 'share']); } else { - $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because email address is not set.', ['app' => 'share']); + $this->logger->debug('Share notification not sent to ' . $share->getSharedWith() . ' because email address is not set.', ['app' => 'share']); } } else { - $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because user could not be found.', ['app' => 'share']); + $this->logger->debug('Share notification not sent to ' . $share->getSharedWith() . ' because user could not be found.', ['app' => 'share']); } } else { - $this->logger->debug('Share notification not send because mailsend is false.', ['app' => 'share']); + $this->logger->debug('Share notification not sent because mailsend is false.', ['app' => 'share']); } } @@ -708,13 +708,16 @@ class Manager implements IManager { } /** + * Send mail notifications + * + * This method will catch and log mail transmission errors + * * @param IL10N $l Language of the recipient * @param string $filename file/folder name * @param string $link link to the file/folder * @param string $initiator user ID of share sender * @param string $shareWith email address of share receiver * @param \DateTime|null $expiration - * @throws \Exception If mail couldn't be sent */ protected function sendMailNotification(IL10N $l, $filename, @@ -773,7 +776,15 @@ class Manager implements IManager { } $message->useTemplate($emailTemplate); - $this->mailer->send($message); + try { + $failedRecipients = $this->mailer->send($message); + if(!empty($failedRecipients)) { + $this->logger->error('Share notification mail could not be sent to: ' . implode(', ', $failedRecipients)); + return; + } + } catch (\Exception $e) { + $this->logger->logException($e, ['message' => 'Share notification mail could not be sent']); + } } /** |