summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2019-01-30 20:05:23 +0100
committerGitHub <noreply@github.com>2019-01-30 20:05:23 +0100
commit85d6d7b87c82bfed9f1a494d55074daff0e2e3ee (patch)
tree6784ac5544fbdf6337bc8d4a057e56e272b8ad79 /lib/private
parentbe6475784ae39880ce4d2f338bcd8f40c2a4b082 (diff)
parent7e3e3bed5048940033494d6179527b8b3112e15f (diff)
downloadnextcloud-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.php23
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']);
+ }
}
/**