diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php index e3c471521f469..7a62ba19d4fb3 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php @@ -262,7 +262,10 @@ private function getAllEMailAddressesFromEvent(VEvent $vevent):array { $emailAddressesOfDelegates = $delegates->getParts(); foreach($emailAddressesOfDelegates as $addressesOfDelegate) { if (strcasecmp($addressesOfDelegate, 'mailto:') === 0) { - $emailAddresses[substr($addressesOfDelegate, 7)] = []; + $delegateEmail = substr($addressesOfDelegate, 7); + if ($delegateEmail !== false && $this->mailer->validateMailAddress($delegateEmail)) { + $emailAddresses[$delegateEmail] = []; + } } } @@ -334,8 +337,12 @@ private function getEMailAddressOfAttendee(VObject\Property $attendee):?string { if (!$this->hasAttendeeMailURI($attendee)) { return null; } + $attendeeEMail = substr($attendee->getValue(), 7); + if ($attendeeEMail === false || !$this->mailer->validateMailAddress($attendeeEMail)) { + return null; + } - return substr($attendee->getValue(), 7); + return $attendeeEMail; } /** diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php index c07259f9cd71d..4b2aa463874c4 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php @@ -250,30 +250,20 @@ public function testSendWithAttendees(): void { $deL10N->method('l') ->will($this->returnArgument(0)); - $this->l10nFactory->expects($this->at(0)) + $this->l10nFactory->expects(self::exactly(3)) ->method('findLanguage') ->with() ->willReturn('en'); - $this->l10nFactory->expects($this->at(1)) + $this->l10nFactory->expects(self::exactly(3)) ->method('languageExists') - ->with('dav', 'de') + ->withConsecutive(['dav', 'en'], ['dav', 'de'], ['dav', 'de']) ->willReturn(true); - $this->l10nFactory->expects($this->at(2)) + $this->l10nFactory->expects(self::exactly(2)) ->method('get') - ->with('dav', 'de') - ->willReturn($enL10N); - - $this->l10nFactory->expects($this->at(3)) - ->method('languageExists') - ->with('dav', 'en') - ->willReturn(true); - - $this->l10nFactory->expects($this->at(4)) - ->method('get') - ->with('dav', 'en') - ->willReturn($deL10N); + ->withConsecutive(['dav', 'de'], ['dav', 'de']) + ->willReturnOnConsecutiveCalls([$deL10N],[$deL10N]); $template1 = $this->getTemplateMock(); $message11 = $this->getMessageMock('foo1@example.org', $template1); @@ -284,7 +274,7 @@ public function testSendWithAttendees(): void { $message22 = $this->getMessageMock('foo4@example.org', $template2); $message23 = $this->getMessageMock('uid1@example.com', $template2); - $this->mailer->expects($this->at(0)) + $this->mailer->expects(self::exactly(2)) ->method('createEMailTemplate') ->with('dav.calendarReminder') ->willReturn($template1); @@ -341,9 +331,14 @@ public function testSendWithAttendees(): void { ->willReturn($message23); $this->mailer->expects($this->at(13)) ->method('send') - ->with($message23) - ->willReturn([]); - + ->withConsecutive( + [$message11], + [$message12], + [$message13], + [$message21], + [$message22], + [$message23] + )->willReturn([]); $this->setupURLGeneratorMock(2); $vcalendar = $this->getAttendeeVCalendar();