From 05473fe7d0a6d37232b40a45711ad35ac21e83b6 Mon Sep 17 00:00:00 2001 From: TAKAHASHI Kunihiko Date: Tue, 21 May 2013 10:50:46 +0900 Subject: [PATCH] Processing was simplified when a length of one line was smaller than CakeEmail::LINE_LENGTH_MUST --- lib/Cake/Network/Email/CakeEmail.php | 6 +- .../Test/Case/Network/Email/CakeEmailTest.php | 120 ++++++++++-------- 2 files changed, 73 insertions(+), 53 deletions(-) diff --git a/lib/Cake/Network/Email/CakeEmail.php b/lib/Cake/Network/Email/CakeEmail.php index 5ca5dd28d..82e4463b3 100644 --- a/lib/Cake/Network/Email/CakeEmail.php +++ b/lib/Cake/Network/Email/CakeEmail.php @@ -1254,7 +1254,11 @@ class CakeEmail { $formatted[] = ''; continue; } - if (!preg_match('/<[a-z]+.+>/i', $line)) { + if (strlen($line) < $wrapLength) { + $formatted[] = $line; + continue; + } + if (!preg_match('/<[a-z]+.*>/i', $line)) { $formatted = array_merge( $formatted, explode("\n", wordwrap($line, $wrapLength, "\n")) diff --git a/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php b/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php index b30e2d8a8..41878f138 100644 --- a/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php +++ b/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php @@ -1622,58 +1622,6 @@ class CakeEmailTest extends CakeTestCase { $this->assertContains('ってテーブルを作ってやってたらう', $result['message']); } - public function testWrapLongLine() { - $message = '' . str_repeat('x', CakeEmail::LINE_LENGTH_MUST) . ""; - - $this->CakeEmail->reset(); - $this->CakeEmail->transport('Debug'); - $this->CakeEmail->from('cake@cakephp.org'); - $this->CakeEmail->to('cake@cakephp.org'); - $this->CakeEmail->subject('Wordwrap Test'); - $this->CakeEmail->config(array('empty')); - $result = $this->CakeEmail->send($message); - $expected = "' . str_repeat('x', CakeEmail::LINE_LENGTH_MUST) . "\r\n\r\n\r\n"; - $this->assertEquals($expected, $result['message']); - } - - public function testWrapIncludeTag() { - $message = 'CakePHP'; - - $this->CakeEmail->reset(); - $this->CakeEmail->transport('Debug'); - $this->CakeEmail->from('cake@cakephp.org'); - $this->CakeEmail->to('cake@cakephp.org'); - $this->CakeEmail->subject('Wordwrap Test'); - $this->CakeEmail->config(array('empty')); - $result = $this->CakeEmail->send($message); - $expected = "{$message}\r\n\r\n"; - $this->assertEquals($expected, $result['message']); - - $message = 'fooCakeEmail->send($message); - $expected = "{$message}\r\n\r\n"; - $this->assertEquals($expected, $result['message']); - } - - public function testWrapForJapaneseEncoding() { - $this->skipIf(!function_exists('mb_convert_encoding')); - - $message = mb_convert_encoding('受け付けました', 'iso-2022-jp', 'UTF-8'); - - $this->CakeEmail->reset(); - $this->CakeEmail->transport('Debug'); - $this->CakeEmail->from('cake@cakephp.org'); - $this->CakeEmail->to('cake@cakephp.org'); - $this->CakeEmail->subject('Wordwrap Test'); - $this->CakeEmail->config(array('empty')); - $this->CakeEmail->charset('iso-2022-jp'); - $this->CakeEmail->headerCharset('iso-2022-jp'); - $result = $this->CakeEmail->send($message); - $expected = "{$message}\r\n\r\n"; - $this->assertEquals($expected, $result['message']); - } - /** * Tests that the body is encoded using the configured charset * @@ -1918,4 +1866,72 @@ class CakeEmailTest extends CakeTestCase { return $email; } + public function testWrapLongLine() { + $message = '' . str_repeat('x', CakeEmail::LINE_LENGTH_MUST) . ""; + + $this->CakeEmail->reset(); + $this->CakeEmail->transport('Debug'); + $this->CakeEmail->from('cake@cakephp.org'); + $this->CakeEmail->to('cake@cakephp.org'); + $this->CakeEmail->subject('Wordwrap Test'); + $this->CakeEmail->config(array('empty')); + $result = $this->CakeEmail->send($message); + $expected = "' . str_repeat('x', CakeEmail::LINE_LENGTH_MUST) . "\r\n\r\n\r\n"; + $this->assertEquals($expected, $result['message']); + + $str1 = "a "; + $str2 = " b"; + $len = strlen($str1) + strlen($str2); + $message = $str1 . str_repeat('x', CakeEmail::LINE_LENGTH_MUST - $len - 1) . $str2; + + $result = $this->CakeEmail->send($message); + $expected = "{$message}\r\n\r\n"; + $this->assertEquals($expected, $result['message']); + + $message = $str1 . str_repeat('x', CakeEmail::LINE_LENGTH_MUST - $len) . $str2; + + $result = $this->CakeEmail->send($message); + $expected = "{$message}\r\n\r\n"; + $this->assertEquals($expected, $result['message']); + + $message = $str1 . str_repeat('x', CakeEmail::LINE_LENGTH_MUST - $len + 1) . $str2; + + $result = $this->CakeEmail->send($message); + $expected = $str1 . str_repeat('x', CakeEmail::LINE_LENGTH_MUST - $len + 1) . sprintf("\r\n%s\r\n\r\n", trim($str2)); + $this->assertEquals($expected, $result['message']); + } + + public function testWrapIncludeLessThanSign() { + $str = 'fooCakeEmail->reset(); + $this->CakeEmail->transport('Debug'); + $this->CakeEmail->from('cake@cakephp.org'); + $this->CakeEmail->to('cake@cakephp.org'); + $this->CakeEmail->subject('Wordwrap Test'); + $this->CakeEmail->config(array('empty')); + $result = $this->CakeEmail->send($message); + $expected = "{$message}\r\n\r\n"; + $this->assertEquals($expected, $result['message']); + } + + public function testWrapForJapaneseEncoding() { + $this->skipIf(!function_exists('mb_convert_encoding')); + + $message = mb_convert_encoding('受け付けました', 'iso-2022-jp', 'UTF-8'); + + $this->CakeEmail->reset(); + $this->CakeEmail->transport('Debug'); + $this->CakeEmail->from('cake@cakephp.org'); + $this->CakeEmail->to('cake@cakephp.org'); + $this->CakeEmail->subject('Wordwrap Test'); + $this->CakeEmail->config(array('empty')); + $this->CakeEmail->charset('iso-2022-jp'); + $this->CakeEmail->headerCharset('iso-2022-jp'); + $result = $this->CakeEmail->send($message); + $expected = "{$message}\r\n\r\n"; + $this->assertEquals($expected, $result['message']); + } }