From a20c809796bf143b53488b9d3f7c50728a46ac06 Mon Sep 17 00:00:00 2001 From: rchavik Date: Thu, 4 Feb 2010 09:13:11 +0700 Subject: [PATCH] EmailComponent: Accept arrays for $to variable (closes #293) --- cake/libs/controller/components/email.php | 37 ++++++++++++++++++----- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/cake/libs/controller/components/email.php b/cake/libs/controller/components/email.php index cbd5acd7b..d96f2811d 100644 --- a/cake/libs/controller/components/email.php +++ b/cake/libs/controller/components/email.php @@ -363,7 +363,7 @@ class EmailComponent extends Object{ */ function reset() { $this->template = null; - $this->to = null; + $this->to = array(); $this->from = null; $this->replyTo = null; $this->return = null; @@ -473,7 +473,11 @@ class EmailComponent extends Object{ */ function __createHeader() { if ($this->delivery == 'smtp') { - $this->__header[] = 'To: ' . $this->__formatAddress($this->to); + if (is_array($this->to)) { + $this->__header[] = 'To: ' . implode(', ', array_map(array($this, '__formatAddress'), $this->to)); + } else { + $this->__header[] = 'To: ' . $this->__formatAddress($this->to); + } } $this->__header[] = 'From: ' . $this->__formatAddress($this->from); @@ -692,10 +696,15 @@ class EmailComponent extends Object{ function __mail() { $header = implode("\n", $this->__header); $message = implode("\n", $this->__message); - if (ini_get('safe_mode')) { - return @mail($this->to, $this->__encode($this->subject), $message, $header); + if (is_array($this->to)) { + $to = implode(', ', array_map(array($this, '__formatAddress'), $this->to)); + } else { + $to = $this->to; } - return @mail($this->to, $this->__encode($this->subject), $message, $header, $this->additionalParams); + if (ini_get('safe_mode')) { + return @mail($to, $this->__encode($this->subject), $message, $header); + } + return @mail($to, $this->__encode($this->subject), $message, $header, $this->additionalParams); } /** @@ -748,8 +757,15 @@ class EmailComponent extends Object{ return false; } - if (!$this->__smtpSend('RCPT TO: ' . $this->__formatAddress($this->to, true))) { - return false; + if (!is_array($this->to)) { + $tos = array($this->to); + } else { + $tos = $this->to; + } + foreach ($tos as $to) { + if (!$this->__smtpSend('RCPT TO: ' . $this->__formatAddress($to, true))) { + return false; + } } foreach ($this->cc as $cc) { @@ -814,12 +830,17 @@ class EmailComponent extends Object{ $message = implode($nl, $this->__message); $fm = '
';
 
+		if (is_array($this->to)) {
+			$to = implode(', ', array_map(array($this, '__formatAddress'), $this->to));
+		} else {
+			$to = $this->to;
+		}
 		if ($this->delivery == 'smtp') {
 			$fm .= sprintf('%s %s%s', 'Host:', $this->smtpOptions['host'], $nl);
 			$fm .= sprintf('%s %s%s', 'Port:', $this->smtpOptions['port'], $nl);
 			$fm .= sprintf('%s %s%s', 'Timeout:', $this->smtpOptions['timeout'], $nl);
 		}
-		$fm .= sprintf('%s %s%s', 'To:', $this->to, $nl);
+		$fm .= sprintf('%s %s%s', 'To:', $to, $nl);
 		$fm .= sprintf('%s %s%s', 'From:', $this->from, $nl);
 		$fm .= sprintf('%s %s%s', 'Subject:', $this->__encode($this->subject), $nl);
 		$fm .= sprintf('%s%3$s%3$s%s', 'Header:', $header, $nl);