mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Fixing issue where Date header would be missing from Emails sent by
EmailComponent. Adding user configurable field for date. Test cases added. Fixes #1304
This commit is contained in:
parent
d9484c109f
commit
d5fb0b25cb
2 changed files with 41 additions and 0 deletions
|
@ -97,6 +97,15 @@ class EmailComponent extends Object{
|
|||
*/
|
||||
var $bcc = array();
|
||||
|
||||
/**
|
||||
* The date to put in the Date: header. This should be a date
|
||||
* conformant with the RFC2822 standard. Leave null, to have
|
||||
* today's date generated.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
var $date = null;
|
||||
|
||||
/**
|
||||
* The subject of the email
|
||||
*
|
||||
|
@ -410,6 +419,7 @@ class EmailComponent extends Object{
|
|||
$this->bcc = array();
|
||||
$this->subject = null;
|
||||
$this->additionalParams = null;
|
||||
$this->date = null;
|
||||
$this->smtpError = null;
|
||||
$this->attachments = array();
|
||||
$this->htmlMessage = null;
|
||||
|
@ -574,6 +584,12 @@ class EmailComponent extends Object{
|
|||
}
|
||||
}
|
||||
|
||||
$date = $this->date;
|
||||
if ($date == false) {
|
||||
$date = date(DATE_RFC2822);
|
||||
}
|
||||
$headers['Date'] = $date;
|
||||
|
||||
$headers['X-Mailer'] = $this->xMailer;
|
||||
|
||||
if (!empty($this->headers)) {
|
||||
|
|
|
@ -493,6 +493,7 @@ TEMPDOC;
|
|||
$this->Controller->EmailTest->delivery = 'debug';
|
||||
$this->Controller->EmailTest->messageId = false;
|
||||
|
||||
$date = date(DATE_RFC2822);
|
||||
$message = <<<MSGBLOC
|
||||
<pre>To: postmaster@localhost
|
||||
From: noreply@example.com
|
||||
|
@ -501,6 +502,7 @@ Header:
|
|||
|
||||
From: noreply@example.com
|
||||
Reply-To: noreply@example.com
|
||||
Date: $date
|
||||
X-Mailer: CakePHP Email Component
|
||||
Content-Type: {CONTENTTYPE}
|
||||
Content-Transfer-Encoding: 7bitParameters:
|
||||
|
@ -544,6 +546,7 @@ MSGBLOC;
|
|||
$this->Controller->EmailTest->delivery = 'debug';
|
||||
$this->Controller->EmailTest->messageId = false;
|
||||
|
||||
$date = date(DATE_RFC2822);
|
||||
$header = <<<HEADBLOC
|
||||
To: postmaster@localhost
|
||||
From: noreply@example.com
|
||||
|
@ -552,6 +555,7 @@ Header:
|
|||
|
||||
From: noreply@example.com
|
||||
Reply-To: noreply@example.com
|
||||
Date: $date
|
||||
X-Mailer: CakePHP Email Component
|
||||
Content-Type: {CONTENTTYPE}
|
||||
Content-Transfer-Encoding: 7bitParameters:
|
||||
|
@ -689,6 +693,7 @@ TEXTBLOC;
|
|||
$this->assertPattern('/Subject: Cake Debug Test\n/', $result);
|
||||
$this->assertPattern('/Reply-To: noreply@example.com\n/', $result);
|
||||
$this->assertPattern('/From: noreply@example.com\n/', $result);
|
||||
$this->assertPattern('/Date: ' . date(DATE_RFC2822) . '\n/', $result);
|
||||
$this->assertPattern('/X-Mailer: CakePHP Email Component\n/', $result);
|
||||
$this->assertPattern('/Content-Type: text\/plain; charset=UTF-8\n/', $result);
|
||||
$this->assertPattern('/Content-Transfer-Encoding: 7bitParameters:\n/', $result);
|
||||
|
@ -716,6 +721,7 @@ TEXTBLOC;
|
|||
$this->assertPattern('/Subject: Cake Debug Test\n/', $result);
|
||||
$this->assertPattern('/Reply-To: noreply@example.com\n/', $result);
|
||||
$this->assertPattern('/From: noreply@example.com\n/', $result);
|
||||
$this->assertPattern('/Date: ' . date(DATE_RFC2822) . '\n/', $result);
|
||||
$this->assertPattern('/X-Mailer: CakePHP Email Component\n/', $result);
|
||||
$this->assertPattern('/Content-Type: text\/plain; charset=UTF-8\n/', $result);
|
||||
$this->assertPattern('/Content-Transfer-Encoding: 7bitParameters:\n/', $result);
|
||||
|
@ -849,7 +855,24 @@ HTMLBLOC;
|
|||
$this->assertPattern('/First line\n/', $result);
|
||||
$this->assertPattern('/Second line\n/', $result);
|
||||
$this->assertPattern('/Third line\n/', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* test setting a custom date.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testDateProperty() {
|
||||
$this->Controller->EmailTest->to = 'postmaster@localhost';
|
||||
$this->Controller->EmailTest->from = 'noreply@example.com';
|
||||
$this->Controller->EmailTest->subject = 'Cake Debug Test';
|
||||
$this->Controller->EmailTest->date = 'Today!';
|
||||
$this->Controller->EmailTest->template = null;
|
||||
$this->Controller->EmailTest->delivery = 'debug';
|
||||
|
||||
$this->assertTrue($this->Controller->EmailTest->send('test message'));
|
||||
$result = $this->Controller->Session->read('Message.email.message');
|
||||
$this->assertPattern('/Date: Today!\n/', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1043,6 +1066,7 @@ HTMLBLOC;
|
|||
$this->Controller->EmailTest->return = 'test.return@example.com';
|
||||
$this->Controller->EmailTest->cc = array('cc1@example.com', 'cc2@example.com');
|
||||
$this->Controller->EmailTest->bcc = array('bcc1@example.com', 'bcc2@example.com');
|
||||
$this->Controller->EmailTest->date = 'Today!';
|
||||
$this->Controller->EmailTest->subject = 'Test subject';
|
||||
$this->Controller->EmailTest->additionalParams = 'X-additional-header';
|
||||
$this->Controller->EmailTest->delivery = 'smtp';
|
||||
|
@ -1064,6 +1088,7 @@ HTMLBLOC;
|
|||
$this->assertNull($this->Controller->EmailTest->return);
|
||||
$this->assertIdentical($this->Controller->EmailTest->cc, array());
|
||||
$this->assertIdentical($this->Controller->EmailTest->bcc, array());
|
||||
$this->assertNull($this->Controller->EmailTest->date);
|
||||
$this->assertNull($this->Controller->EmailTest->subject);
|
||||
$this->assertNull($this->Controller->EmailTest->additionalParams);
|
||||
$this->assertIdentical($this->Controller->EmailTest->getHeaders(), array());
|
||||
|
|
Loading…
Reference in a new issue