diff --git a/lib/Cake/Network/CakeEmail.php b/lib/Cake/Network/CakeEmail.php index d1c6777ee8c..79e0a66f7ef 100644 --- a/lib/Cake/Network/CakeEmail.php +++ b/lib/Cake/Network/CakeEmail.php @@ -528,24 +528,7 @@ public function getHeaders($include = array()) { ); $include += $defaults; - $headers = $this->_headers; - if (!isset($headers['X-Mailer'])) { - $headers['X-Mailer'] = Configure::read('Email.XMailer'); - if (empty($headers['X-Mailer'])) { - $headers['X-Mailer'] = self::EMAIL_CLIENT; - } - } - if (!isset($headers['Date'])) { - $headers['Date'] = date(DATE_RFC2822); - } - if ($this->_messageId !== false) { - if ($this->_messageId === true) { - $headers['Message-ID'] = '<' . String::UUID() . '@' . env('HTTP_HOST') . '>'; - } else { - $headers['Message-ID'] = $this->_messageId; - } - } - + $headers = array(); $relation = array( 'from' => 'From', 'replyTo' => 'Reply-To', @@ -566,6 +549,24 @@ public function getHeaders($include = array()) { } } + $headers += $this->_headers; + if (!isset($headers['X-Mailer'])) { + $headers['X-Mailer'] = Configure::read('Email.XMailer'); + if (empty($headers['X-Mailer'])) { + $headers['X-Mailer'] = self::EMAIL_CLIENT; + } + } + if (!isset($headers['Date'])) { + $headers['Date'] = date(DATE_RFC2822); + } + if ($this->_messageId !== false) { + if ($this->_messageId === true) { + $headers['Message-ID'] = '<' . String::UUID() . '@' . env('HTTP_HOST') . '>'; + } else { + $headers['Message-ID'] = $this->_messageId; + } + } + if ($include['subject']) { $headers['Subject'] = $this->_subject; } diff --git a/lib/Cake/tests/Case/Network/CakeEmailTest.php b/lib/Cake/tests/Case/Network/CakeEmailTest.php index 5ee7d18b063..2e2b932de38 100644 --- a/lib/Cake/tests/Case/Network/CakeEmailTest.php +++ b/lib/Cake/tests/Case/Network/CakeEmailTest.php @@ -240,7 +240,13 @@ public function testHeaders() { $this->CakeEmail->setFrom('cake@cakephp.org'); $this->assertIdentical($this->CakeEmail->getHeaders(), $expected); - $expected['From'] = 'cake@cakephp.org'; + $expected = array( + 'From' => 'cake@cakephp.org', + 'X-Something' => 'very nice', + 'X-Other' => 'cool', + 'X-Mailer' => 'CakePHP Email Component', + 'Date' => date(DATE_RFC2822) + ); $this->assertIdentical($this->CakeEmail->getHeaders(array('from' => true)), $expected); $this->CakeEmail->setFrom('cake@cakephp.org', 'CakePHP'); @@ -248,7 +254,14 @@ public function testHeaders() { $this->assertIdentical($this->CakeEmail->getHeaders(array('from' => true)), $expected); $this->CakeEmail->setTo(array('cake@cakephp.org', 'php@cakephp.org' => 'CakePHP')); - $expected['To'] = 'cake@cakephp.org, CakePHP '; + $expected = array( + 'From' => 'CakePHP ', + 'To' => 'cake@cakephp.org, CakePHP ', + 'X-Something' => 'very nice', + 'X-Other' => 'cool', + 'X-Mailer' => 'CakePHP Email Component', + 'Date' => date(DATE_RFC2822) + ); $this->assertIdentical($this->CakeEmail->getHeaders(array('from' => true, 'to' => true)), $expected); }