From d5407764d7fe9c1a7e32fd44afe01eaf4bf7b4ed Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Thu, 11 Feb 2021 13:27:02 +0100 Subject: [PATCH] Do not send imip email to invalid recipients Signed-off-by: Christoph Wurst --- apps/dav/lib/CalDAV/Schedule/IMipPlugin.php | 5 +++++ .../tests/unit/CalDAV/Schedule/IMipPluginTest.php | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php index e360273383..8161272955 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 a31fdfdc5f..3b2abd8575 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');