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); } }