From 046deb125ad72a0e6fc4f912580e994a21b6b3c4 Mon Sep 17 00:00:00 2001 From: Romain Quetiez Date: Thu, 21 Mar 2013 14:44:22 +0000 Subject: [PATCH] #691 Notifications not sent if some recicipients have an empty address -reintegrated from trunk SVN:2.0[2654] --- core/action.class.inc.php | 8 ++++++-- core/email.class.inc.php | 24 +++++++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/core/action.class.inc.php b/core/action.class.inc.php index 6da8620c25..4b934f2e63 100644 --- a/core/action.class.inc.php +++ b/core/action.class.inc.php @@ -213,8 +213,12 @@ class ActionEmail extends ActionNotification $aRecipients = array(); while ($oObj = $oSet->Fetch()) { - $aRecipients[] = $oObj->Get($sEmailAttCode); - $this->m_iRecipients++; + $sAddress = trim($oObj->Get($sEmailAttCode)); + if (strlen($sAddress) > 0) + { + $aRecipients[] = $sAddress; + $this->m_iRecipients++; + } } return implode(', ', $aRecipients); } diff --git a/core/email.class.inc.php b/core/email.class.inc.php index 0d844dd710..d9af95f206 100644 --- a/core/email.class.inc.php +++ b/core/email.class.inc.php @@ -187,11 +187,29 @@ class EMail return $this->m_oMessage->getSubject(); } + /** + * Helper to transform and sanitize addresses + * - get rid of empty addresses + */ + protected function AddressStringToArray($sAddressCSVList) + { + $aAddresses = array(); + foreach(explode(',', $sAddressCSVList) as $sAddress) + { + $sAddress = trim($sAddress); + if (strlen($sAddress) > 0) + { + $aAddresses[] = $sAddress; + } + } + return $aAddresses; + } + public function SetRecipientTO($sAddress) { if (!empty($sAddress)) { - $aAddresses = explode(', ', $sAddress); + $aAddresses = $this->AddressStringToArray($sAddress); $this->m_oMessage->setTo($aAddresses); } } @@ -226,7 +244,7 @@ class EMail { if (!empty($sAddress)) { - $aAddresses = explode(', ', $sAddress); + $aAddresses = $this->AddressStringToArray($sAddress); $this->m_oMessage->setCc($aAddresses); } } @@ -235,7 +253,7 @@ class EMail { if (!empty($sAddress)) { - $aAddresses = explode(', ', $sAddress); + $aAddresses = $this->AddressStringToArray($sAddress); $this->m_oMessage->setBcc($aAddresses); } }