Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Wurst <ChristophWurst@users.noreply.github.com>2019-01-31 10:54:46 +0300
committerGitHub <noreply@github.com>2019-01-31 10:54:46 +0300
commitd57afb3e54d293f7b4ec908324cb6e29c476cff4 (patch)
treeaab4ef90e1944b3d55def5a1d9d5df4ae11a37c4
parentd34b7e594becd98e95219efcc826e91c7b49d7fa (diff)
parent13eb255277409812fd5c40ea0e01d5ea8b63d09c (diff)
Merge pull request #13930 from nextcloud/backport/12636/stable15
[stable15] handle mail send error gracefully
-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']);
+ }
}
/**