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
path: root/apps/dav
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2021-02-11 15:27:02 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2021-02-17 11:29:36 +0300
commit59805dbe2c99236414ced8f4e234232a46812420 (patch)
tree9dd6aba89d94cb0a3908531ccaa6677dd0e2b960 /apps/dav
parent3c8bea717e4f24481493962b687482ceb47225e6 (diff)
Do not send imip email to invalid recipients
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'apps/dav')
-rw-r--r--apps/dav/lib/CalDAV/Schedule/IMipPlugin.php5
-rw-r--r--apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php14
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 6358a3a0293..760ab33ebb9 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 8faa54f534a..fc9365c01dd 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');