Do not send imip email to invalid recipients

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
Christoph Wurst 2021-02-11 13:27:02 +01:00
parent 3c8bea717e
commit 59805dbe2c
No known key found for this signature in database
GPG Key ID: CC42AC2A7F0E56D8
2 changed files with 19 additions and 0 deletions

View File

@ -177,6 +177,11 @@ class IMipPlugin extends SabreIMipPlugin {
// Strip off mailto: // Strip off mailto:
$sender = substr($iTipMessage->sender, 7); $sender = substr($iTipMessage->sender, 7);
$recipient = substr($iTipMessage->recipient, 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; $senderName = $iTipMessage->senderName ?: null;
$recipientName = $iTipMessage->recipientName ?: null; $recipientName = $iTipMessage->recipientName ?: null;

View File

@ -139,6 +139,7 @@ class IMipPluginTest extends TestCase {
->method('getAppValue') ->method('getAppValue')
->with('dav', 'invitation_link_recipients', 'yes') ->with('dav', 'invitation_link_recipients', 'yes')
->willReturn('yes'); ->willReturn('yes');
$this->mailer->method('validateMailAddress')->willReturn(true);
$message = $this->_testMessage(); $message = $this->_testMessage();
$this->_expectSend(); $this->_expectSend();
@ -151,6 +152,7 @@ class IMipPluginTest extends TestCase {
->method('getAppValue') ->method('getAppValue')
->with('dav', 'invitation_link_recipients', 'yes') ->with('dav', 'invitation_link_recipients', 'yes')
->willReturn('yes'); ->willReturn('yes');
$this->mailer->method('validateMailAddress')->willReturn(true);
$message = $this->_testMessage(); $message = $this->_testMessage();
$this->mailer $this->mailer
@ -161,11 +163,20 @@ class IMipPluginTest extends TestCase {
$this->assertEquals('5.0', $message->getScheduleStatus()); $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() { public function testDeliveryWithNoCommonName() {
$this->config $this->config
->method('getAppValue') ->method('getAppValue')
->with('dav', 'invitation_link_recipients', 'yes') ->with('dav', 'invitation_link_recipients', 'yes')
->willReturn('yes'); ->willReturn('yes');
$this->mailer->method('validateMailAddress')->willReturn(true);
$message = $this->_testMessage(); $message = $this->_testMessage();
$message->senderName = null; $message->senderName = null;
@ -191,6 +202,7 @@ class IMipPluginTest extends TestCase {
->method('getAppValue') ->method('getAppValue')
->with('dav', 'invitation_link_recipients', 'yes') ->with('dav', 'invitation_link_recipients', 'yes')
->willReturn('yes'); ->willReturn('yes');
$this->mailer->method('validateMailAddress')->willReturn(true);
$message = $this->_testMessage($veventParams); $message = $this->_testMessage($veventParams);
@ -225,6 +237,7 @@ class IMipPluginTest extends TestCase {
*/ */
public function testIncludeResponseButtons(string $config_setting, string $recipient, bool $has_buttons) { public function testIncludeResponseButtons(string $config_setting, string $recipient, bool $has_buttons) {
$message = $this->_testMessage([],$recipient); $message = $this->_testMessage([],$recipient);
$this->mailer->method('validateMailAddress')->willReturn(true);
$this->_expectSend($recipient, true, $has_buttons); $this->_expectSend($recipient, true, $has_buttons);
$this->config $this->config
@ -254,6 +267,7 @@ class IMipPluginTest extends TestCase {
->method('getAppValue') ->method('getAppValue')
->with('dav', 'invitation_link_recipients', 'yes') ->with('dav', 'invitation_link_recipients', 'yes')
->willReturn('yes'); ->willReturn('yes');
$this->mailer->method('validateMailAddress')->willReturn(true);
$message = $this->_testMessage(['SUMMARY' => '']); $message = $this->_testMessage(['SUMMARY' => '']);
$this->_expectSend('frodo@hobb.it', true, true,'Invitation: Untitled event'); $this->_expectSend('frodo@hobb.it', true, true,'Invitation: Untitled event');