From 59805dbe2c99236414ced8f4e234232a46812420 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 6358a3a029..760ab33ebb 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -177,6 +177,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 8faa54f534..fc9365c01d 100644 --- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php +++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php @@ -139,6 +139,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(); @@ -151,6 +152,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 @@ -161,11 +163,20 @@ 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 ->method('getAppValue') ->with('dav', 'invitation_link_recipients', 'yes') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage(); $message->senderName = null; @@ -191,6 +202,7 @@ class IMipPluginTest extends TestCase { ->method('getAppValue') ->with('dav', 'invitation_link_recipients', 'yes') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage($veventParams); @@ -225,6 +237,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 @@ -254,6 +267,7 @@ class IMipPluginTest extends TestCase { ->method('getAppValue') ->with('dav', 'invitation_link_recipients', 'yes') ->willReturn('yes'); + $this->mailer->method('validateMailAddress')->willReturn(true); $message = $this->_testMessage(['SUMMARY' => '']); $this->_expectSend('frodo@hobb.it', true, true,'Invitation: Untitled event');