From a562d9c04e006bd2fd0c3687e8bc18d9abc1f96a Mon Sep 17 00:00:00 2001 From: TAKAHASHI Kunihiko Date: Fri, 17 May 2013 18:36:53 +0900 Subject: [PATCH] The assembly of the message was not correctly completed in specific Japanese. --- lib/Cake/Network/Email/CakeEmail.php | 2 +- .../Test/Case/Network/Email/CakeEmailTest.php | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/Cake/Network/Email/CakeEmail.php b/lib/Cake/Network/Email/CakeEmail.php index 4250893c036..8ab91f05c5b 100644 --- a/lib/Cake/Network/Email/CakeEmail.php +++ b/lib/Cake/Network/Email/CakeEmail.php @@ -1253,7 +1253,7 @@ protected function _wrap($message, $wrapLength = CakeEmail::LINE_LENGTH_MUST) { $formatted[] = ''; continue; } - if (!preg_match('/\<[a-z]/i', $line)) { + 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 37991a169e7..ba52d3955c2 100644 --- a/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php +++ b/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php @@ -1622,6 +1622,38 @@ public function testHeaderEncoding() { $this->assertContains('ってテーブルを作ってやってたらう', $result['message']); } + public function testWrapLongLine() { + $message = '' . str_repeat('1234567890', 100) . ""; + + $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('1234567890', 100) . "\r\n\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 *