diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2021-02-12 08:54:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-12 08:54:48 +0100 |
commit | f6f6051b739d396fe97ebe8a29a00135c248de42 (patch) | |
tree | 96fb09aafbd8615fcb993cfaeec11268ca8157e1 | |
parent | 9b978a714deea390642b0d6574e49a9c70650d7b (diff) | |
parent | d5407764d7fe9c1a7e32fd44afe01eaf4bf7b4ed (diff) | |
download | nextcloud-server-f6f6051b739d396fe97ebe8a29a00135c248de42.tar.gz nextcloud-server-f6f6051b739d396fe97ebe8a29a00135c248de42.zip |
Merge pull request #25592 from nextcloud/backport/25582/stable20
[stable20] Do not send imip email to invalid recipients
-rw-r--r-- | apps/dav/lib/CalDAV/Schedule/IMipPlugin.php | 5 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php | 14 |
2 files changed, 19 insertions, 0 deletions
diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php index e360273383e..81612729558 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -178,6 +178,11 @@ class IMipPlugin extends SabreIMipPlugin { // Strip off mailto: $sender = substr($iTipMessage->sender, 7); $recipient = substr($iTipMessage->recipient, 7); + if (!$this->mailer->validateMailAddress($recipient)) { + // Nothing to send if the recipient doesn't have a valid email address + $iTipMessage->scheduleStatus = '5.0; EMail delivery failed'; + return; + } $senderName = $iTipMessage->senderName ?: null; $recipientName = $iTipMessage->recipientName ?: null; diff --git a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php index a31fdfdc5f7..3b2abd8575e 100644 --- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php +++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php @@ -140,6 +140,7 @@ class IMipPluginTest extends TestCase { ->method('getAppValue') ->with('dav', 'invitation_link_recipients', 'yes') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage(); $this->_expectSend(); @@ -153,6 +154,7 @@ class IMipPluginTest extends TestCase { ->method('getAppValue') ->with('dav', 'invitation_link_recipients', 'yes') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage(); $this->mailer @@ -163,12 +165,21 @@ class IMipPluginTest extends TestCase { $this->assertEquals('5.0', $message->getScheduleStatus()); } + public function testInvalidEmailDelivery() { + $this->mailer->method('validateMailAddress')->willReturn(false); + + $message = $this->_testMessage(); + $this->plugin->schedule($message); + $this->assertEquals('5.0', $message->getScheduleStatus()); + } + public function testDeliveryWithNoCommonName() { $this->config ->expects($this->at(1)) ->method('getAppValue') ->with('dav', 'invitation_link_recipients', 'yes') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage(); $message->senderName = null; @@ -193,6 +204,7 @@ class IMipPluginTest extends TestCase { $this->config ->method('getAppValue') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage($veventParams); @@ -227,6 +239,7 @@ class IMipPluginTest extends TestCase { */ public function testIncludeResponseButtons(string $config_setting, string $recipient, bool $has_buttons) { $message = $this->_testMessage([],$recipient); + $this->mailer->method('validateMailAddress')->willReturn(true); $this->_expectSend($recipient, true, $has_buttons); $this->config @@ -256,6 +269,7 @@ class IMipPluginTest extends TestCase { $this->config ->method('getAppValue') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage(['SUMMARY' => '']); $this->_expectSend('frodo@hobb.it', true, true,'Invitation: Untitled event'); |