]> source.dussan.org Git - nextcloud-server.git/commitdiff
Do not send imip email to invalid recipients 25591/head
authorChristoph Wurst <christoph@winzerhof-wurst.at>
Thu, 11 Feb 2021 12:27:02 +0000 (13:27 +0100)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Thu, 11 Feb 2021 19:00:23 +0000 (19:00 +0000)
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php

index b88364aaa9d2f90aecdb6f9f2576e05cd8a4e669..bfc82c0ee9020bdfd1a521fc0964d001c6b7c3e0 100644 (file)
@@ -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;
index a31fdfdc5f7126d9d6c9a8b8539ee9a7763170dd..3b2abd8575e5d093d397f0414b251909347ef79a 100644 (file)
@@ -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');