Check line length to account for fence post.

When we have exactly 998 bytes CakeEmail should not emit an error.

Refs #5948
This commit is contained in:
mark_story 2015-02-23 21:37:49 -05:00
parent ef820964e5
commit b80a8947d7
3 changed files with 34 additions and 1 deletions

View file

@ -1421,7 +1421,7 @@ class CakeEmail {
$tmpLine .= $char; $tmpLine .= $char;
$tmpLineLength++; $tmpLineLength++;
if ($tmpLineLength === $wrapLength) { if ($tmpLineLength === $wrapLength) {
$nextChar = $line[$i + 1]; $nextChar = isset($line[$i + 1]) ? $line[$i + 1] : '';
if ($nextChar === ' ' || $nextChar === '<') { if ($nextChar === ' ' || $nextChar === '<') {
$formatted[] = trim($tmpLine); $formatted[] = trim($tmpLine);
$tmpLine = ''; $tmpLine = '';

View file

@ -2435,6 +2435,25 @@ HTML;
$this->assertEquals($expected, $result['message']); $this->assertEquals($expected, $result['message']);
} }
/**
* Test that really long lines don't cause errors.
*
* @return void
*/
public function testReallyLongLine() {
$this->CakeEmail->reset();
$this->CakeEmail->config(array('empty'));
$this->CakeEmail->transport('Debug');
$this->CakeEmail->from('cake@cakephp.org');
$this->CakeEmail->to('cake@cakephp.org');
$this->CakeEmail->subject('Wordwrap Test');
$this->CakeEmail->emailFormat('html');
$this->CakeEmail->template('long_line', null);
$result = $this->CakeEmail->send();
$this->assertContains('<a>', $result['message'], 'First bits are included');
$this->assertContains('x', $result['message'], 'Last byte are included');
}
/** /**
* CakeEmailTest::assertLineLengths() * CakeEmailTest::assertLineLengths()
* *

View file

@ -0,0 +1,14 @@
<?php
echo '<a>34567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' .
'1234567890123456789012345678901234567890123456x';