12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844 |
- <?php
- /**
- * CakeEmailTest file
- *
- * PHP 5
- *
- * CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
- * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
- *
- * Licensed under The MIT License
- * Redistributions of files must retain the above copyright notice
- *
- * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
- * @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
- * @package Cake.Test.Case.Network.Email
- * @since CakePHP(tm) v 2.0.0
- * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
- */
- App::uses('CakeEmail', 'Network/Email');
- /**
- * Help to test CakeEmail
- *
- */
- class TestCakeEmail extends CakeEmail {
- /**
- * Config
- *
- */
- protected $_config = array();
- /**
- * Wrap to protected method
- *
- */
- public function formatAddress($address) {
- return parent::_formatAddress($address);
- }
- /**
- * Wrap to protected method
- *
- */
- public function wrap($text, $length = CakeEmail::LINE_LENGTH_MUST) {
- return parent::_wrap($text, $length);
- }
- /**
- * Get the boundary attribute
- *
- * @return string
- */
- public function getBoundary() {
- return $this->_boundary;
- }
- /**
- * Encode to protected method
- *
- */
- public function encode($text) {
- return $this->_encode($text);
- }
- }
- /*
- * EmailConfig class
- *
- */
- class EmailConfig {
- /**
- * test config
- *
- * @var string
- */
- public $test = array(
- 'from' => array('[email protected]' => 'My website'),
- 'to' => array('[email protected]' => 'Testname'),
- 'subject' => 'Test mail subject',
- 'transport' => 'Debug',
- 'theme' => 'TestTheme',
- 'helpers' => array('Html', 'Form'),
- );
- }
- /*
- * ExtendTransport class
- * test class to ensure the class has send() method
- *
- */
- class ExtendTransport {
- }
- /**
- * CakeEmailTest class
- *
- * @package Cake.Test.Case.Network.Email
- */
- class CakeEmailTest extends CakeTestCase {
- /**
- * setUp
- *
- * @return void
- */
- public function setUp() {
- parent::setUp();
- $this->CakeEmail = new TestCakeEmail();
- App::build(array(
- 'View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS)
- ));
- }
- /**
- * tearDown method
- *
- * @return void
- */
- public function tearDown() {
- parent::tearDown();
- App::build();
- }
- /**
- * testFrom method
- *
- * @return void
- */
- public function testFrom() {
- $this->assertSame($this->CakeEmail->from(), array());
- $this->CakeEmail->from('[email protected]');
- $expected = array('[email protected]' => '[email protected]');
- $this->assertSame($this->CakeEmail->from(), $expected);
- $this->CakeEmail->from(array('[email protected]'));
- $this->assertSame($this->CakeEmail->from(), $expected);
- $this->CakeEmail->from('[email protected]', 'CakePHP');
- $expected = array('[email protected]' => 'CakePHP');
- $this->assertSame($this->CakeEmail->from(), $expected);
- $result = $this->CakeEmail->from(array('[email protected]' => 'CakePHP'));
- $this->assertSame($this->CakeEmail->from(), $expected);
- $this->assertSame($this->CakeEmail, $result);
- $this->setExpectedException('SocketException');
- $result = $this->CakeEmail->from(array('[email protected]' => 'CakePHP', '[email protected]' => 'From can only be one address'));
- }
- /**
- * testSender method
- *
- * @return void
- */
- public function testSender() {
- $this->CakeEmail->reset();
- $this->assertSame($this->CakeEmail->sender(), array());
- $this->CakeEmail->sender('[email protected]', 'Name');
- $expected = array('[email protected]' => 'Name');
- $this->assertSame($this->CakeEmail->sender(), $expected);
- $headers = $this->CakeEmail->getHeaders(array('from' => true, 'sender' => true));
- $this->assertSame($headers['From'], false);
- $this->assertSame($headers['Sender'], 'Name <[email protected]>');
- $this->CakeEmail->from('[email protected]', 'CakePHP');
- $headers = $this->CakeEmail->getHeaders(array('from' => true, 'sender' => true));
- $this->assertSame($headers['From'], 'CakePHP <[email protected]>');
- $this->assertSame($headers['Sender'], '');
- }
- /**
- * testTo method
- *
- * @return void
- */
- public function testTo() {
- $this->assertSame($this->CakeEmail->to(), array());
- $result = $this->CakeEmail->to('[email protected]');
- $expected = array('[email protected]' => '[email protected]');
- $this->assertSame($this->CakeEmail->to(), $expected);
- $this->assertSame($this->CakeEmail, $result);
- $this->CakeEmail->to('[email protected]', 'CakePHP');
- $expected = array('[email protected]' => 'CakePHP');
- $this->assertSame($this->CakeEmail->to(), $expected);
- $list = array(
- '[email protected]' => 'Cake PHP',
- '[email protected]' => 'Cake Groups',
- '[email protected]'
- );
- $this->CakeEmail->to($list);
- $expected = array(
- '[email protected]' => 'Cake PHP',
- '[email protected]' => 'Cake Groups',
- '[email protected]' => '[email protected]'
- );
- $this->assertSame($this->CakeEmail->to(), $expected);
- $this->CakeEmail->addTo('[email protected]');
- $this->CakeEmail->addTo('[email protected]', 'Mark Story');
- $result = $this->CakeEmail->addTo(array('[email protected]' => 'PhpNut', '[email protected]'));
- $expected = array(
- '[email protected]' => 'Cake PHP',
- '[email protected]' => 'Cake Groups',
- '[email protected]' => '[email protected]',
- '[email protected]' => '[email protected]',
- '[email protected]' => 'Mark Story',
- '[email protected]' => 'PhpNut',
- '[email protected]' => '[email protected]'
- );
- $this->assertSame($this->CakeEmail->to(), $expected);
- $this->assertSame($this->CakeEmail, $result);
- }
- /**
- * Data provider function for testBuildInvalidData
- *
- * @return array
- */
- public static function invalidEmails() {
- return array(
- array(1.0),
- array(''),
- array('string'),
- array('<tag>'),
- array('some@one-whereis'),
- array('wrong@key' => 'Name'),
- array(array('[email protected]', 1.0, '', 'string'))
- );
- }
- /**
- * testBuildInvalidData
- *
- * @dataProvider invalidEmails
- * @expectedException SocketException
- * @return void
- */
- public function testInvalidEmail($value) {
- $this->CakeEmail->to($value);
- }
- /**
- * testBuildInvalidData
- *
- * @dataProvider invalidEmails
- * @expectedException SocketException
- * @return void
- */
- public function testInvalidEmailAdd($value) {
- $this->CakeEmail->addTo($value);
- }
- /**
- * testFormatAddress method
- *
- * @return void
- */
- public function testFormatAddress() {
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => '[email protected]'));
- $expected = array('[email protected]');
- $this->assertSame($expected, $result);
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => '[email protected]', '[email protected]' => '[email protected]'));
- $expected = array('[email protected]', '[email protected]');
- $this->assertSame($expected, $result);
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => 'CakePHP', '[email protected]' => 'Cake'));
- $expected = array('CakePHP <[email protected]>', 'Cake <[email protected]>');
- $this->assertSame($expected, $result);
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => 'Last, First'));
- $expected = array('"Last, First" <[email protected]>');
- $this->assertSame($expected, $result);
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => 'Last First'));
- $expected = array('Last First <[email protected]>');
- $this->assertSame($expected, $result);
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => 'ÄÖÜTest'));
- $expected = array('=?UTF-8?B?w4TDlsOcVGVzdA==?= <[email protected]>');
- $this->assertSame($expected, $result);
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => '日本語Test'));
- $expected = array('=?UTF-8?B?5pel5pys6KqeVGVzdA==?= <[email protected]>');
- $this->assertSame($expected, $result);
- }
- /**
- * testFormatAddressJapanese
- *
- * @return void
- */
- public function testFormatAddressJapanese() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $this->CakeEmail->headerCharset = 'ISO-2022-JP';
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => '日本語Test'));
- $expected = array('=?ISO-2022-JP?B?GyRCRnxLXDhsGyhCVGVzdA==?= <[email protected]>');
- $this->assertSame($expected, $result);
- $result = $this->CakeEmail->formatAddress(array('[email protected]' => '寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処やぶら小路の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助'));
- $expected = array("=?ISO-2022-JP?B?GyRCPHc4Qkw1PHc4Qkw1OF45ZSROOyQkakBaJGwzJDo9TXg/ZTV7GyhC?=\r\n" .
- " =?ISO-2022-JP?B?GyRCJE4/ZTlUS3YxQE1oS3ZJd01oS3Y/KSQmPzIkaz1oJEs9OyRgGyhC?=\r\n" .
- " =?ISO-2022-JP?B?GyRCPWgkZCRWJGk+Lk8pJE5pLjQ7O1IlUSUkJV0lUSUkJV0lUSUkGyhC?=\r\n" .
- " =?ISO-2022-JP?B?GyRCJV0kTiU3JWUhPCVqJXMlLCVzJTclZSE8JWolcyUsJXMkTiUwGyhC?=\r\n" .
- " =?ISO-2022-JP?B?GyRCITwlaiVzJUAlJCUwITwlaiVzJUAlJCROJV0lcyVdJTMlVCE8GyhC?=\r\n" .
- " =?ISO-2022-JP?B?GyRCJE4lXSVzJV0lMyVKITwkTkQ5NVdMPyRORDk9dRsoQg==?= <[email protected]>");
- $this->assertSame($expected, $result);
- }
- /**
- * testAddresses method
- *
- * @return void
- */
- public function testAddresses() {
- $this->CakeEmail->reset();
- $this->CakeEmail->from('[email protected]', 'CakePHP');
- $this->CakeEmail->replyTo('[email protected]', 'ReplyTo CakePHP');
- $this->CakeEmail->readReceipt('[email protected]', 'ReadReceipt CakePHP');
- $this->CakeEmail->returnPath('[email protected]', 'ReturnPath CakePHP');
- $this->CakeEmail->to('[email protected]', 'To CakePHP');
- $this->CakeEmail->cc('[email protected]', 'Cc CakePHP');
- $this->CakeEmail->bcc('[email protected]', 'Bcc CakePHP');
- $this->CakeEmail->addTo('[email protected]', 'To2 CakePHP');
- $this->CakeEmail->addCc('[email protected]', 'Cc2 CakePHP');
- $this->CakeEmail->addBcc('[email protected]', 'Bcc2 CakePHP');
- $this->assertSame($this->CakeEmail->from(), array('[email protected]' => 'CakePHP'));
- $this->assertSame($this->CakeEmail->replyTo(), array('[email protected]' => 'ReplyTo CakePHP'));
- $this->assertSame($this->CakeEmail->readReceipt(), array('[email protected]' => 'ReadReceipt CakePHP'));
- $this->assertSame($this->CakeEmail->returnPath(), array('[email protected]' => 'ReturnPath CakePHP'));
- $this->assertSame($this->CakeEmail->to(), array('[email protected]' => 'To CakePHP', '[email protected]' => 'To2 CakePHP'));
- $this->assertSame($this->CakeEmail->cc(), array('[email protected]' => 'Cc CakePHP', '[email protected]' => 'Cc2 CakePHP'));
- $this->assertSame($this->CakeEmail->bcc(), array('[email protected]' => 'Bcc CakePHP', '[email protected]' => 'Bcc2 CakePHP'));
- $headers = $this->CakeEmail->getHeaders(array_fill_keys(array('from', 'replyTo', 'readReceipt', 'returnPath', 'to', 'cc', 'bcc'), true));
- $this->assertSame($headers['From'], 'CakePHP <[email protected]>');
- $this->assertSame($headers['Reply-To'], 'ReplyTo CakePHP <[email protected]>');
- $this->assertSame($headers['Disposition-Notification-To'], 'ReadReceipt CakePHP <[email protected]>');
- $this->assertSame($headers['Return-Path'], 'ReturnPath CakePHP <[email protected]>');
- $this->assertSame($headers['To'], 'To CakePHP <[email protected]>, To2 CakePHP <[email protected]>');
- $this->assertSame($headers['Cc'], 'Cc CakePHP <[email protected]>, Cc2 CakePHP <[email protected]>');
- $this->assertSame($headers['Bcc'], 'Bcc CakePHP <[email protected]>, Bcc2 CakePHP <[email protected]>');
- }
- /**
- * testMessageId method
- *
- * @return void
- */
- public function testMessageId() {
- $this->CakeEmail->messageId(true);
- $result = $this->CakeEmail->getHeaders();
- $this->assertTrue(isset($result['Message-ID']));
- $this->CakeEmail->messageId(false);
- $result = $this->CakeEmail->getHeaders();
- $this->assertFalse(isset($result['Message-ID']));
- $result = $this->CakeEmail->messageId('<my-email@localhost>');
- $this->assertSame($this->CakeEmail, $result);
- $result = $this->CakeEmail->getHeaders();
- $this->assertSame($result['Message-ID'], '<my-email@localhost>');
- $result = $this->CakeEmail->messageId();
- $this->assertSame($result, '<my-email@localhost>');
- }
- /**
- * testMessageIdInvalid method
- *
- * @return void
- * @expectedException SocketException
- */
- public function testMessageIdInvalid() {
- $this->CakeEmail->messageId('my-email@localhost');
- }
- /**
- * testDomain method
- *
- * @return void
- */
- public function testDomain() {
- $result = $this->CakeEmail->domain();
- $expected = env('HTTP_HOST') ? env('HTTP_HOST') : php_uname('n');
- $this->assertSame($expected, $result);
- $this->CakeEmail->domain('example.org');
- $result = $this->CakeEmail->domain();
- $expected = 'example.org';
- $this->assertSame($expected, $result);
- }
- /**
- * testMessageIdWithDomain method
- *
- * @return void
- */
- public function testMessageIdWithDomain() {
- $this->CakeEmail->domain('example.org');
- $result = $this->CakeEmail->getHeaders();
- $expected = '@example.org>';
- $this->assertTextContains($expected, $result['Message-ID']);
- $_SERVER['HTTP_HOST'] = 'example.org';
- $result = $this->CakeEmail->getHeaders();
- $this->assertTextContains('example.org', $result['Message-ID']);
- $_SERVER['HTTP_HOST'] = 'example.org:81';
- $result = $this->CakeEmail->getHeaders();
- $this->assertTextNotContains(':81', $result['Message-ID']);
- }
- /**
- * testSubject method
- *
- * @return void
- */
- public function testSubject() {
- $this->CakeEmail->subject('You have a new message.');
- $this->assertSame($this->CakeEmail->subject(), 'You have a new message.');
- $this->CakeEmail->subject('You have a new message, I think.');
- $this->assertSame($this->CakeEmail->subject(), 'You have a new message, I think.');
- $this->CakeEmail->subject(1);
- $this->assertSame($this->CakeEmail->subject(), '1');
- $this->CakeEmail->subject('هذه رسالة بعنوان طويل مرسل للمستلم');
- $expected = '=?UTF-8?B?2YfYsNmHINix2LPYp9mE2Kkg2KjYudmG2YjYp9mGINi32YjZitmEINmF2LE=?=' . "\r\n" . ' =?UTF-8?B?2LPZhCDZhNmE2YXYs9iq2YTZhQ==?=';
- $this->assertSame($this->CakeEmail->subject(), $expected);
- }
- /**
- * testSubjectJapanese
- *
- * @return void
- */
- public function testSubjectJapanese() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- mb_internal_encoding('UTF-8');
- $this->CakeEmail->headerCharset = 'ISO-2022-JP';
- $this->CakeEmail->subject('日本語のSubjectにも対応するよ');
- $expected = '=?ISO-2022-JP?B?GyRCRnxLXDhsJE4bKEJTdWJqZWN0GyRCJEskYkJQMX4kOSRrJGgbKEI=?=';
- $this->assertSame($this->CakeEmail->subject(), $expected);
- $this->CakeEmail->subject('長い長い長いSubjectの場合はfoldingするのが正しいんだけどいったいどうなるんだろう?');
- $expected = "=?ISO-2022-JP?B?GyRCRDkkJEQ5JCREOSQkGyhCU3ViamVjdBskQiROPmw5ZyRPGyhCZm9s?=\r\n" .
- " =?ISO-2022-JP?B?ZGluZxskQiQ5JGskTiQsQDUkNyQkJHMkQCQxJEkkJCRDJD8kJCRJGyhC?=\r\n" .
- " =?ISO-2022-JP?B?GyRCJCYkSiRrJHMkQCRtJCYhKRsoQg==?=";
- $this->assertSame($this->CakeEmail->subject(), $expected);
- }
- /**
- * testHeaders method
- *
- * @return void
- */
- public function testHeaders() {
- $this->CakeEmail->messageId(false);
- $this->CakeEmail->setHeaders(array('X-Something' => 'nice'));
- $expected = array(
- 'X-Something' => 'nice',
- 'X-Mailer' => 'CakePHP Email',
- 'Date' => date(DATE_RFC2822),
- 'MIME-Version' => '1.0',
- 'Content-Type' => 'text/plain; charset=UTF-8',
- 'Content-Transfer-Encoding' => '8bit'
- );
- $this->assertSame($this->CakeEmail->getHeaders(), $expected);
- $this->CakeEmail->addHeaders(array('X-Something' => 'very nice', 'X-Other' => 'cool'));
- $expected = array(
- 'X-Something' => 'very nice',
- 'X-Other' => 'cool',
- 'X-Mailer' => 'CakePHP Email',
- 'Date' => date(DATE_RFC2822),
- 'MIME-Version' => '1.0',
- 'Content-Type' => 'text/plain; charset=UTF-8',
- 'Content-Transfer-Encoding' => '8bit'
- );
- $this->assertSame($this->CakeEmail->getHeaders(), $expected);
- $this->CakeEmail->from('[email protected]');
- $this->assertSame($this->CakeEmail->getHeaders(), $expected);
- $expected = array(
- 'From' => '[email protected]',
- 'X-Something' => 'very nice',
- 'X-Other' => 'cool',
- 'X-Mailer' => 'CakePHP Email',
- 'Date' => date(DATE_RFC2822),
- 'MIME-Version' => '1.0',
- 'Content-Type' => 'text/plain; charset=UTF-8',
- 'Content-Transfer-Encoding' => '8bit'
- );
- $this->assertSame($this->CakeEmail->getHeaders(array('from' => true)), $expected);
- $this->CakeEmail->from('[email protected]', 'CakePHP');
- $expected['From'] = 'CakePHP <[email protected]>';
- $this->assertSame($this->CakeEmail->getHeaders(array('from' => true)), $expected);
- $this->CakeEmail->to(array('[email protected]', '[email protected]' => 'CakePHP'));
- $expected = array(
- 'From' => 'CakePHP <[email protected]>',
- 'To' => '[email protected], CakePHP <[email protected]>',
- 'X-Something' => 'very nice',
- 'X-Other' => 'cool',
- 'X-Mailer' => 'CakePHP Email',
- 'Date' => date(DATE_RFC2822),
- 'MIME-Version' => '1.0',
- 'Content-Type' => 'text/plain; charset=UTF-8',
- 'Content-Transfer-Encoding' => '8bit'
- );
- $this->assertSame($this->CakeEmail->getHeaders(array('from' => true, 'to' => true)), $expected);
- $this->CakeEmail->charset = 'ISO-2022-JP';
- $expected = array(
- 'From' => 'CakePHP <[email protected]>',
- 'To' => '[email protected], CakePHP <[email protected]>',
- 'X-Something' => 'very nice',
- 'X-Other' => 'cool',
- 'X-Mailer' => 'CakePHP Email',
- 'Date' => date(DATE_RFC2822),
- 'MIME-Version' => '1.0',
- 'Content-Type' => 'text/plain; charset=ISO-2022-JP',
- 'Content-Transfer-Encoding' => '7bit'
- );
- $this->assertSame($this->CakeEmail->getHeaders(array('from' => true, 'to' => true)), $expected);
- $result = $this->CakeEmail->setHeaders(array());
- $this->assertInstanceOf('CakeEmail', $result);
- }
- /**
- * Data provider function for testInvalidHeaders
- *
- * @return array
- */
- public static function invalidHeaders() {
- return array(
- array(10),
- array(''),
- array('string'),
- array(false),
- array(null)
- );
- }
- /**
- * testInvalidHeaders
- *
- * @dataProvider invalidHeaders
- * @expectedException SocketException
- * @return void
- */
- public function testInvalidHeaders($value) {
- $this->CakeEmail->setHeaders($value);
- }
- /**
- * testInvalidAddHeaders
- *
- * @dataProvider invalidHeaders
- * @expectedException SocketException
- * @return void
- */
- public function testInvalidAddHeaders($value) {
- $this->CakeEmail->addHeaders($value);
- }
- /**
- * testTemplate method
- *
- * @return void
- */
- public function testTemplate() {
- $this->CakeEmail->template('template', 'layout');
- $expected = array('template' => 'template', 'layout' => 'layout');
- $this->assertSame($this->CakeEmail->template(), $expected);
- $this->CakeEmail->template('new_template');
- $expected = array('template' => 'new_template', 'layout' => 'layout');
- $this->assertSame($this->CakeEmail->template(), $expected);
- $this->CakeEmail->template('template', null);
- $expected = array('template' => 'template', 'layout' => null);
- $this->assertSame($this->CakeEmail->template(), $expected);
- $this->CakeEmail->template(null, null);
- $expected = array('template' => null, 'layout' => null);
- $this->assertSame($this->CakeEmail->template(), $expected);
- }
- /**
- * testTheme method
- *
- * @return void
- */
- public function testTheme() {
- $this->assertSame(null, $this->CakeEmail->theme());
- $this->CakeEmail->theme('default');
- $expected = 'default';
- $this->assertSame($expected, $this->CakeEmail->theme());
- }
- /**
- * testViewVars method
- *
- * @return void
- */
- public function testViewVars() {
- $this->assertSame($this->CakeEmail->viewVars(), array());
- $this->CakeEmail->viewVars(array('value' => 12345));
- $this->assertSame($this->CakeEmail->viewVars(), array('value' => 12345));
- $this->CakeEmail->viewVars(array('name' => 'CakePHP'));
- $this->assertSame($this->CakeEmail->viewVars(), array('value' => 12345, 'name' => 'CakePHP'));
- $this->CakeEmail->viewVars(array('value' => 4567));
- $this->assertSame($this->CakeEmail->viewVars(), array('value' => 4567, 'name' => 'CakePHP'));
- }
- /**
- * testAttachments method
- *
- * @return void
- */
- public function testAttachments() {
- $this->CakeEmail->attachments(CAKE . 'basics.php');
- $expected = array(
- 'basics.php' => array(
- 'file' => CAKE . 'basics.php',
- 'mimetype' => 'application/octet-stream'
- )
- );
- $this->assertSame($this->CakeEmail->attachments(), $expected);
- $this->CakeEmail->attachments(array());
- $this->assertSame($this->CakeEmail->attachments(), array());
- $this->CakeEmail->attachments(array(
- array('file' => CAKE . 'basics.php', 'mimetype' => 'text/plain')
- ));
- $this->CakeEmail->addAttachments(CAKE . 'bootstrap.php');
- $this->CakeEmail->addAttachments(array(CAKE . 'bootstrap.php'));
- $this->CakeEmail->addAttachments(array('other.txt' => CAKE . 'bootstrap.php', 'license' => CAKE . 'LICENSE.txt'));
- $expected = array(
- 'basics.php' => array('file' => CAKE . 'basics.php', 'mimetype' => 'text/plain'),
- 'bootstrap.php' => array('file' => CAKE . 'bootstrap.php', 'mimetype' => 'application/octet-stream'),
- 'other.txt' => array('file' => CAKE . 'bootstrap.php', 'mimetype' => 'application/octet-stream'),
- 'license' => array('file' => CAKE . 'LICENSE.txt', 'mimetype' => 'application/octet-stream')
- );
- $this->assertSame($this->CakeEmail->attachments(), $expected);
- $this->setExpectedException('SocketException');
- $this->CakeEmail->attachments(array(array('nofile' => CAKE . 'basics.php', 'mimetype' => 'text/plain')));
- }
- /**
- * testTransport method
- *
- * @return void
- */
- public function testTransport() {
- $result = $this->CakeEmail->transport('Debug');
- $this->assertSame($this->CakeEmail, $result);
- $this->assertSame($this->CakeEmail->transport(), 'Debug');
- $result = $this->CakeEmail->transportClass();
- $this->assertInstanceOf('DebugTransport', $result);
- $this->setExpectedException('SocketException');
- $this->CakeEmail->transport('Invalid');
- $result = $this->CakeEmail->transportClass();
- }
- /**
- * testExtendTransport method
- *
- * @return void
- */
- public function testExtendTransport() {
- $this->setExpectedException('SocketException');
- $this->CakeEmail->transport('Extend');
- $this->CakeEmail->transportClass();
- }
- /**
- * testConfig method
- *
- * @return void
- */
- public function testConfig() {
- $transportClass = $this->CakeEmail->transport('debug')->transportClass();
- $config = array('test' => 'ok', 'test2' => true);
- $this->CakeEmail->config($config);
- $this->assertSame($transportClass->config(), $config);
- $this->assertSame($this->CakeEmail->config(), $config);
- $this->CakeEmail->config(array());
- $this->assertSame($transportClass->config(), array());
- }
- /**
- * testConfigString method
- *
- * @return void
- */
- public function testConfigString() {
- $configs = new EmailConfig();
- $this->CakeEmail->config('test');
- $result = $this->CakeEmail->to();
- $this->assertEquals($configs->test['to'], $result);
- $result = $this->CakeEmail->from();
- $this->assertEquals($configs->test['from'], $result);
- $result = $this->CakeEmail->subject();
- $this->assertEquals($configs->test['subject'], $result);
- $result = $this->CakeEmail->theme();
- $this->assertEquals($configs->test['theme'], $result);
- $result = $this->CakeEmail->transport();
- $this->assertEquals($configs->test['transport'], $result);
- $result = $this->CakeEmail->transportClass();
- $this->assertInstanceOf('DebugTransport', $result);
- $result = $this->CakeEmail->helpers();
- $this->assertEquals($configs->test['helpers'], $result);
- }
- /**
- * testSendWithContent method
- *
- * @return void
- */
- public function testSendWithContent() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('Debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $result = $this->CakeEmail->send("Here is my body, with multi lines.\nThis is the second line.\r\n\r\nAnd the last.");
- $expected = array('headers', 'message');
- $this->assertEquals($expected, array_keys($result));
- $expected = "Here is my body, with multi lines.\r\nThis is the second line.\r\n\r\nAnd the last.\r\n\r\n";
- $this->assertEquals($expected, $result['message']);
- $this->assertTrue((bool)strpos($result['headers'], 'Date: '));
- $this->assertTrue((bool)strpos($result['headers'], 'Message-ID: '));
- $this->assertTrue((bool)strpos($result['headers'], 'To: '));
- $result = $this->CakeEmail->send("Other body");
- $expected = "Other body\r\n\r\n";
- $this->assertSame($result['message'], $expected);
- $this->assertTrue((bool)strpos($result['headers'], 'Message-ID: '));
- $this->assertTrue((bool)strpos($result['headers'], 'To: '));
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('Debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $result = $this->CakeEmail->send(array('Sending content', 'As array'));
- $expected = "Sending content\r\nAs array\r\n\r\n\r\n";
- $this->assertSame($result['message'], $expected);
- }
- /**
- * testSendWithoutFrom method
- *
- * @return void
- */
- public function testSendWithoutFrom() {
- $this->CakeEmail->transport('Debug');
- $this->CakeEmail->to('[email protected]');
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->setExpectedException('SocketException');
- $this->CakeEmail->send("Forgot to set From");
- }
- /**
- * testSendWithoutTo method
- *
- * @return void
- */
- public function testSendWithoutTo() {
- $this->CakeEmail->transport('Debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->setExpectedException('SocketException');
- $this->CakeEmail->send("Forgot to set To");
- }
- /**
- * Test send() with no template.
- *
- * @return void
- */
- public function testSendNoTemplateWithAttachments() {
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to('[email protected]');
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->emailFormat('text');
- $this->CakeEmail->attachments(array(CAKE . 'basics.php'));
- $result = $this->CakeEmail->send('Hello');
- $boundary = $this->CakeEmail->getBoundary();
- $this->assertContains('Content-Type: multipart/mixed; boundary="' . $boundary . '"', $result['headers']);
- $expected = "--$boundary\r\n" .
- "Content-Type: text/plain; charset=UTF-8\r\n" .
- "Content-Transfer-Encoding: 8bit\r\n" .
- "\r\n" .
- "Hello" .
- "\r\n" .
- "\r\n" .
- "\r\n" .
- "--$boundary\r\n" .
- "Content-Type: application/octet-stream\r\n" .
- "Content-Transfer-Encoding: base64\r\n" .
- "Content-Disposition: attachment; filename=\"basics.php\"\r\n\r\n";
- $this->assertContains($expected, $result['message']);
- }
- /**
- * Test send() with no template as both
- *
- * @return void
- */
- public function testSendNoTemplateWithAttachmentsAsBoth() {
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to('[email protected]');
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->emailFormat('both');
- $this->CakeEmail->attachments(array(CAKE . 'VERSION.txt'));
- $result = $this->CakeEmail->send('Hello');
- $boundary = $this->CakeEmail->getBoundary();
- $this->assertContains('Content-Type: multipart/mixed; boundary="' . $boundary . '"', $result['headers']);
- $expected = "--$boundary\r\n" .
- "Content-Type: multipart/alternative; boundary=\"alt-$boundary\"\r\n" .
- "\r\n" .
- "--alt-$boundary\r\n" .
- "Content-Type: text/plain; charset=UTF-8\r\n" .
- "Content-Transfer-Encoding: 8bit\r\n" .
- "\r\n" .
- "Hello" .
- "\r\n" .
- "\r\n" .
- "\r\n" .
- "--alt-$boundary\r\n" .
- "Content-Type: text/html; charset=UTF-8\r\n" .
- "Content-Transfer-Encoding: 8bit\r\n" .
- "\r\n" .
- "Hello" .
- "\r\n" .
- "\r\n" .
- "\r\n" .
- "--alt-{$boundary}--\r\n" .
- "\r\n" .
- "--$boundary\r\n" .
- "Content-Type: application/octet-stream\r\n" .
- "Content-Transfer-Encoding: base64\r\n" .
- "Content-Disposition: attachment; filename=\"VERSION.txt\"\r\n\r\n";
- $this->assertContains($expected, $result['message']);
- }
- /**
- * Test setting inline attachments and messages.
- *
- * @return void
- */
- public function testSendWithInlineAttachments() {
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to('[email protected]');
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->emailFormat('both');
- $this->CakeEmail->attachments(array(
- 'cake.png' => array(
- 'file' => CAKE . 'VERSION.txt',
- 'contentId' => 'abc123'
- )
- ));
- $result = $this->CakeEmail->send('Hello');
- $boundary = $this->CakeEmail->getBoundary();
- $this->assertContains('Content-Type: multipart/mixed; boundary="' . $boundary . '"', $result['headers']);
- $expected = "--$boundary\r\n" .
- "Content-Type: multipart/related; boundary=\"rel-$boundary\"\r\n" .
- "\r\n" .
- "--rel-$boundary\r\n" .
- "Content-Type: multipart/alternative; boundary=\"alt-$boundary\"\r\n" .
- "\r\n" .
- "--alt-$boundary\r\n" .
- "Content-Type: text/plain; charset=UTF-8\r\n" .
- "Content-Transfer-Encoding: 8bit\r\n" .
- "\r\n" .
- "Hello" .
- "\r\n" .
- "\r\n" .
- "\r\n" .
- "--alt-$boundary\r\n" .
- "Content-Type: text/html; charset=UTF-8\r\n" .
- "Content-Transfer-Encoding: 8bit\r\n" .
- "\r\n" .
- "Hello" .
- "\r\n" .
- "\r\n" .
- "\r\n" .
- "--alt-{$boundary}--\r\n" .
- "\r\n" .
- "--rel-$boundary\r\n" .
- "Content-Type: application/octet-stream\r\n" .
- "Content-Transfer-Encoding: base64\r\n" .
- "Content-ID: <abc123>\r\n" .
- "Content-Disposition: inline; filename=\"cake.png\"\r\n\r\n";
- $this->assertContains($expected, $result['message']);
- $this->assertContains('--rel-' . $boundary . '--', $result['message']);
- $this->assertContains('--' . $boundary . '--', $result['message']);
- }
- /**
- * Test disabling content-disposition.
- *
- * @return void
- */
- public function testSendWithNoContentDispositionAttachments() {
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to('[email protected]');
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->emailFormat('text');
- $this->CakeEmail->attachments(array(
- 'cake.png' => array(
- 'file' => CAKE . 'VERSION.txt',
- 'contentDisposition' => false
- )
- ));
- $result = $this->CakeEmail->send('Hello');
- $boundary = $this->CakeEmail->getBoundary();
- $this->assertContains('Content-Type: multipart/mixed; boundary="' . $boundary . '"', $result['headers']);
- $expected = "--$boundary\r\n" .
- "Content-Type: text/plain; charset=UTF-8\r\n" .
- "Content-Transfer-Encoding: 8bit\r\n" .
- "\r\n" .
- "Hello" .
- "\r\n" .
- "\r\n" .
- "\r\n" .
- "--{$boundary}\r\n" .
- "Content-Type: application/octet-stream\r\n" .
- "Content-Transfer-Encoding: base64\r\n" .
- "\r\n";
- $this->assertContains($expected, $result['message']);
- $this->assertContains('--' . $boundary . '--', $result['message']);
- }
- /**
- * testSendWithLog method
- *
- * @return void
- */
- public function testSendWithLog() {
- CakeLog::config('email', array(
- 'engine' => 'FileLog',
- 'path' => TMP
- ));
- CakeLog::drop('default');
- $this->CakeEmail->transport('Debug');
- $this->CakeEmail->to('[email protected]');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('log' => 'cake_test_emails'));
- $result = $this->CakeEmail->send("Logging This");
- App::uses('File', 'Utility');
- $File = new File(TMP . 'cake_test_emails.log');
- $log = $File->read();
- $this->assertTrue(strpos($log, $result['headers']) !== false);
- $this->assertTrue(strpos($log, $result['message']) !== false);
- $File->delete();
- CakeLog::drop('email');
- }
- /**
- * testSendRender method
- *
- * @return void
- */
- public function testSendRender() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->template('default', 'default');
- $result = $this->CakeEmail->send();
- $this->assertContains('This email was sent using the CakePHP Framework', $result['message']);
- $this->assertContains('Message-ID: ', $result['headers']);
- $this->assertContains('To: ', $result['headers']);
- }
- /**
- * testSendRender method for ISO-2022-JP
- *
- * @return void
- */
- public function testSendRenderJapanese() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->template('default', 'japanese');
- $this->CakeEmail->charset = 'ISO-2022-JP';
- $result = $this->CakeEmail->send();
- $expected = mb_convert_encoding('CakePHP Framework を使って送信したメールです。 http://cakephp.org.', 'ISO-2022-JP');
- $this->assertContains($expected, $result['message']);
- $this->assertContains('Message-ID: ', $result['headers']);
- $this->assertContains('To: ', $result['headers']);
- }
- /**
- * testSendRenderThemed method
- *
- * @return void
- */
- public function testSendRenderThemed() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->theme('TestTheme');
- $this->CakeEmail->template('themed', 'default');
- $result = $this->CakeEmail->send();
- $this->assertContains('In TestTheme', $result['message']);
- $this->assertContains('Message-ID: ', $result['headers']);
- $this->assertContains('To: ', $result['headers']);
- }
- /**
- * testSendRenderWithVars method
- *
- * @return void
- */
- public function testSendRenderWithVars() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->template('custom', 'default');
- $this->CakeEmail->viewVars(array('value' => 12345));
- $result = $this->CakeEmail->send();
- $this->assertContains('Here is your value: 12345', $result['message']);
- }
- /**
- * testSendRenderWithVars method for ISO-2022-JP
- *
- * @return void
- */
- public function testSendRenderWithVarsJapanese() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->template('japanese', 'default');
- $this->CakeEmail->viewVars(array('value' => '日本語の差し込み123'));
- $this->CakeEmail->charset = 'ISO-2022-JP';
- $result = $this->CakeEmail->send();
- $expected = mb_convert_encoding('ここにあなたの設定した値が入ります: 日本語の差し込み123', 'ISO-2022-JP');
- $this->assertTrue((bool)strpos($result['message'], $expected));
- }
- /**
- * testSendRenderWithHelpers method
- *
- * @return void
- */
- public function testSendRenderWithHelpers() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $timestamp = time();
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->template('custom_helper', 'default');
- $this->CakeEmail->viewVars(array('time' => $timestamp));
- $result = $this->CakeEmail->helpers(array('Time'));
- $this->assertInstanceOf('CakeEmail', $result);
- $result = $this->CakeEmail->send();
- $this->assertTrue((bool)strpos($result['message'], 'Right now: ' . date('Y-m-d\TH:i:s\Z', $timestamp)));
- $result = $this->CakeEmail->helpers();
- $this->assertEquals(array('Time'), $result);
- }
- /**
- * testSendRenderWithImage method
- *
- * @return void
- */
- public function testSendRenderWithImage() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('Debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->template('image');
- $this->CakeEmail->emailFormat('html');
- $server = env('SERVER_NAME') ? env('SERVER_NAME') : 'localhost';
- if (env('SERVER_PORT') && env('SERVER_PORT') != 80) {
- $server .= ':' . env('SERVER_PORT');
- }
- $expected = '<img src="http://' . $server . '/img/image.gif" alt="cool image" width="100" height="100" />';
- $result = $this->CakeEmail->send();
- $this->assertContains($expected, $result['message']);
- }
- /**
- * testSendRenderPlugin method
- *
- * @return void
- */
- public function testSendRenderPlugin() {
- App::build(array(
- 'Plugin' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS)
- ));
- CakePlugin::load('TestPlugin');
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $result = $this->CakeEmail->template('TestPlugin.test_plugin_tpl', 'default')->send();
- $this->assertContains('Into TestPlugin.', $result['message']);
- $this->assertContains('This email was sent using the CakePHP Framework', $result['message']);
- $result = $this->CakeEmail->template('TestPlugin.test_plugin_tpl', 'TestPlugin.plug_default')->send();
- $this->assertContains('Into TestPlugin.', $result['message']);
- $this->assertContains('This email was sent using the TestPlugin.', $result['message']);
- $result = $this->CakeEmail->template('TestPlugin.test_plugin_tpl', 'plug_default')->send();
- $this->assertContains('Into TestPlugin.', $result['message']);
- $this->assertContains('This email was sent using the TestPlugin.', $result['message']);
- // test plugin template overridden by theme
- $this->CakeEmail->theme('TestTheme');
- $result = $this->CakeEmail->send();
- $this->assertContains('Into TestPlugin. (themed)', $result['message']);
- $this->CakeEmail->viewVars(array('value' => 12345));
- $result = $this->CakeEmail->template('custom', 'TestPlugin.plug_default')->send();
- $this->assertContains('Here is your value: 12345', $result['message']);
- $this->assertContains('This email was sent using the TestPlugin.', $result['message']);
- $this->setExpectedException('MissingViewException');
- $this->CakeEmail->template('test_plugin_tpl', 'plug_default')->send();
- }
- /**
- * testSendMultipleMIME method
- *
- * @return void
- */
- public function testSendMultipleMIME() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->template('custom', 'default');
- $this->CakeEmail->config(array());
- $this->CakeEmail->viewVars(array('value' => 12345));
- $this->CakeEmail->emailFormat('both');
- $this->CakeEmail->send();
- $message = $this->CakeEmail->message();
- $boundary = $this->CakeEmail->getBoundary();
- $this->assertFalse(empty($boundary));
- $this->assertContains('--' . $boundary, $message);
- $this->assertContains('--' . $boundary . '--', $message);
- $this->assertContains('--alt-' . $boundary, $message);
- $this->assertContains('--alt-' . $boundary . '--', $message);
- $this->CakeEmail->attachments(array('fake.php' => __FILE__));
- $this->CakeEmail->send();
- $message = $this->CakeEmail->message();
- $boundary = $this->CakeEmail->getBoundary();
- $this->assertFalse(empty($boundary));
- $this->assertContains('--' . $boundary, $message);
- $this->assertContains('--' . $boundary . '--', $message);
- $this->assertContains('--alt-' . $boundary, $message);
- $this->assertContains('--alt-' . $boundary . '--', $message);
- }
- /**
- * testSendAttachment method
- *
- * @return void
- */
- public function testSendAttachment() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array());
- $this->CakeEmail->attachments(array(CAKE . 'basics.php'));
- $result = $this->CakeEmail->send('body');
- $this->assertContains("Content-Type: application/octet-stream\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"basics.php\"", $result['message']);
- $this->CakeEmail->attachments(array('my.file.txt' => CAKE . 'basics.php'));
- $result = $this->CakeEmail->send('body');
- $this->assertContains("Content-Type: application/octet-stream\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"my.file.txt\"", $result['message']);
- $this->CakeEmail->attachments(array('file.txt' => array('file' => CAKE . 'basics.php', 'mimetype' => 'text/plain')));
- $result = $this->CakeEmail->send('body');
- $this->assertContains("Content-Type: text/plain\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"file.txt\"", $result['message']);
- $this->CakeEmail->attachments(array('file2.txt' => array('file' => CAKE . 'basics.php', 'mimetype' => 'text/plain', 'contentId' => 'a1b1c1')));
- $result = $this->CakeEmail->send('body');
- $this->assertContains("Content-Type: text/plain\r\nContent-Transfer-Encoding: base64\r\nContent-ID: <a1b1c1>\r\nContent-Disposition: inline; filename=\"file2.txt\"", $result['message']);
- }
- /**
- * testDeliver method
- *
- * @return void
- */
- public function testDeliver() {
- $instance = CakeEmail::deliver('[email protected]', 'About', 'Everything ok', array('from' => '[email protected]'), false);
- $this->assertInstanceOf('CakeEmail', $instance);
- $this->assertSame($instance->to(), array('[email protected]' => '[email protected]'));
- $this->assertSame($instance->subject(), 'About');
- $this->assertSame($instance->from(), array('[email protected]' => '[email protected]'));
- $config = array(
- 'from' => '[email protected]',
- 'to' => '[email protected]',
- 'subject' => 'Update ok',
- 'template' => 'custom',
- 'layout' => 'custom_layout',
- 'viewVars' => array('value' => 123),
- 'cc' => array('[email protected]' => 'Myself')
- );
- $instance = CakeEmail::deliver(null, null, array('name' => 'CakePHP'), $config, false);
- $this->assertSame($instance->from(), array('[email protected]' => '[email protected]'));
- $this->assertSame($instance->to(), array('[email protected]' => '[email protected]'));
- $this->assertSame($instance->subject(), 'Update ok');
- $this->assertSame($instance->template(), array('template' => 'custom', 'layout' => 'custom_layout'));
- $this->assertSame($instance->viewVars(), array('value' => 123, 'name' => 'CakePHP'));
- $this->assertSame($instance->cc(), array('[email protected]' => 'Myself'));
- $configs = array('from' => '[email protected]', 'message' => 'Message from configs', 'transport' => 'Debug');
- $instance = CakeEmail::deliver('[email protected]', 'About', null, $configs, true);
- $message = $instance->message();
- $this->assertEquals($configs['message'], $message[0]);
- }
- /**
- * testMessage method
- *
- * @return void
- */
- public function testMessage() {
- $this->CakeEmail->reset();
- $this->CakeEmail->transport('debug');
- $this->CakeEmail->from('[email protected]');
- $this->CakeEmail->to(array('[email protected]' => 'You'));
- $this->CakeEmail->subject('My title');
- $this->CakeEmail->config(array('empty'));
- $this->CakeEmail->template('default', 'default');
- $this->CakeEmail->emailFormat('both');
- $this->CakeEmail->send();
- $expected = '<p>This email was sent using the <a href="http://cakephp.org">CakePHP Framework</a></p>';
- $this->assertContains($expected, $this->CakeEmail->message(CakeEmail::MESSAGE_HTML));
- $expected = 'This email was sent using the CakePHP Framework, http://cakephp.org.';
- $this->assertContains($expected, $this->CakeEmail->message(CakeEmail::MESSAGE_TEXT));
- $message = $this->CakeEmail->message();
- $this->assertContains('Content-Type: text/plain; charset=UTF-8', $message);
- $this->assertContains('Content-Type: text/html; charset=UTF-8', $message);
- // UTF-8 is 8bit
- $this->assertTrue($this->_checkContentTransferEncoding($message, '8bit'));
- $this->CakeEmail->charset = 'ISO-2022-JP';
- $this->CakeEmail->send();
- $message = $this->CakeEmail->message();
- $this->assertContains('Content-Type: text/plain; charset=ISO-2022-JP', $message);
- $this->assertContains('Content-Type: text/html; charset=ISO-2022-JP', $message);
- // ISO-2022-JP is 7bit
- $this->assertTrue($this->_checkContentTransferEncoding($message, '7bit'));
- }
- /**
- * testReset method
- *
- * @return void
- */
- public function testReset() {
- $this->CakeEmail->to('[email protected]');
- $this->CakeEmail->theme('TestTheme');
- $this->assertSame($this->CakeEmail->to(), array('[email protected]' => '[email protected]'));
- $this->CakeEmail->reset();
- $this->assertSame($this->CakeEmail->to(), array());
- $this->assertSame(null, $this->CakeEmail->theme());
- }
- /**
- * testReset with charset
- *
- * @return void
- */
- public function testResetWithCharset() {
- $this->CakeEmail->charset = 'ISO-2022-JP';
- $this->CakeEmail->reset();
- $this->assertSame($this->CakeEmail->charset, 'utf-8', $this->CakeEmail->charset);
- $this->assertSame($this->CakeEmail->headerCharset, null, $this->CakeEmail->headerCharset);
- }
- /**
- * testWrap method
- *
- * @return void
- */
- public function testWrap() {
- $text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac turpis orci, non commodo odio. Morbi nibh nisi, vehicula pellentesque accumsan amet.';
- $result = $this->CakeEmail->wrap($text, CakeEmail::LINE_LENGTH_SHOULD);
- $expected = array(
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac turpis orci,',
- 'non commodo odio. Morbi nibh nisi, vehicula pellentesque accumsan amet.',
- ''
- );
- $this->assertSame($expected, $result);
- $text = 'Lorem ipsum dolor sit amet, consectetur < adipiscing elit. Donec ac turpis orci, non commodo odio. Morbi nibh nisi, vehicula > pellentesque accumsan amet.';
- $result = $this->CakeEmail->wrap($text, CakeEmail::LINE_LENGTH_SHOULD);
- $expected = array(
- 'Lorem ipsum dolor sit amet, consectetur < adipiscing elit. Donec ac turpis',
- 'orci, non commodo odio. Morbi nibh nisi, vehicula > pellentesque accumsan',
- 'amet.',
- ''
- );
- $this->assertSame($expected, $result);
- $text = '<p>Lorem ipsum dolor sit amet,<br> consectetur adipiscing elit.<br> Donec ac turpis orci, non <b>commodo</b> odio. <br /> Morbi nibh nisi, vehicula pellentesque accumsan amet.<hr></p>';
- $result = $this->CakeEmail->wrap($text, CakeEmail::LINE_LENGTH_SHOULD);
- $expected = array(
- '<p>Lorem ipsum dolor sit amet,<br> consectetur adipiscing elit.<br> Donec ac',
- 'turpis orci, non <b>commodo</b> odio. <br /> Morbi nibh nisi, vehicula',
- 'pellentesque accumsan amet.<hr></p>',
- ''
- );
- $this->assertSame($expected, $result);
- $text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac <a href="http://cakephp.org">turpis</a> orci, non commodo odio. Morbi nibh nisi, vehicula pellentesque accumsan amet.';
- $result = $this->CakeEmail->wrap($text, CakeEmail::LINE_LENGTH_SHOULD);
- $expected = array(
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac',
- '<a href="http://cakephp.org">turpis</a> orci, non commodo odio. Morbi nibh',
- 'nisi, vehicula pellentesque accumsan amet.',
- ''
- );
- $this->assertSame($expected, $result);
- $text = 'Lorem ipsum <a href="http://www.cakephp.org/controller/action/param1/param2" class="nice cool fine amazing awesome">ok</a>';
- $result = $this->CakeEmail->wrap($text, CakeEmail::LINE_LENGTH_SHOULD);
- $expected = array(
- 'Lorem ipsum',
- '<a href="http://www.cakephp.org/controller/action/param1/param2" class="nice cool fine amazing awesome">',
- 'ok</a>',
- ''
- );
- $this->assertSame($expected, $result);
- $text = 'Lorem ipsum withonewordverybigMorethanthelineshouldsizeofrfcspecificationbyieeeavailableonieeesite ok.';
- $result = $this->CakeEmail->wrap($text, CakeEmail::LINE_LENGTH_SHOULD);
- $expected = array(
- 'Lorem ipsum',
- 'withonewordverybigMorethanthelineshouldsizeofrfcspecificationbyieeeavailableonieeesite',
- 'ok.',
- ''
- );
- $this->assertSame($expected, $result);
- }
- /**
- * testConstructWithConfigArray method
- *
- * @return void
- */
- public function testConstructWithConfigArray() {
- $configs = array(
- 'from' => array('[email protected]' => 'My website'),
- 'to' => '[email protected]',
- 'subject' => 'Test mail subject',
- 'transport' => 'Debug',
- );
- $this->CakeEmail = new CakeEmail($configs);
- $result = $this->CakeEmail->to();
- $this->assertEquals(array($configs['to'] => $configs['to']), $result);
- $result = $this->CakeEmail->from();
- $this->assertEquals($configs['from'], $result);
- $result = $this->CakeEmail->subject();
- $this->assertEquals($configs['subject'], $result);
- $result = $this->CakeEmail->transport();
- $this->assertEquals($configs['transport'], $result);
- $result = $this->CakeEmail->transportClass();
- $this->assertTrue($result instanceof DebugTransport);
- $result = $this->CakeEmail->send('This is the message');
- $this->assertTrue((bool)strpos($result['headers'], 'Message-ID: '));
- $this->assertTrue((bool)strpos($result['headers'], 'To: '));
- }
- /**
- * testConstructWithConfigString method
- *
- * @return void
- */
- public function testConstructWithConfigString() {
- $configs = new EmailConfig();
- $this->CakeEmail = new CakeEmail('test');
- $result = $this->CakeEmail->to();
- $this->assertEquals($configs->test['to'], $result);
- $result = $this->CakeEmail->from();
- $this->assertEquals($configs->test['from'], $result);
- $result = $this->CakeEmail->subject();
- $this->assertEquals($configs->test['subject'], $result);
- $result = $this->CakeEmail->transport();
- $this->assertEquals($configs->test['transport'], $result);
- $result = $this->CakeEmail->transportClass();
- $this->assertTrue($result instanceof DebugTransport);
- $result = $this->CakeEmail->send('This is the message');
- $this->assertTrue((bool)strpos($result['headers'], 'Message-ID: '));
- $this->assertTrue((bool)strpos($result['headers'], 'To: '));
- }
- /**
- * testViewRender method
- *
- * @return void
- */
- public function testViewRender() {
- $result = $this->CakeEmail->viewRender();
- $this->assertEquals('View', $result);
- $result = $this->CakeEmail->viewRender('Theme');
- $this->assertInstanceOf('CakeEmail', $result);
- $result = $this->CakeEmail->viewRender();
- $this->assertEquals('Theme', $result);
- }
- /**
- * testEmailFormat method
- *
- * @return void
- */
- public function testEmailFormat() {
- $result = $this->CakeEmail->emailFormat();
- $this->assertEquals('text', $result);
- $result = $this->CakeEmail->emailFormat('html');
- $this->assertInstanceOf('CakeEmail', $result);
- $result = $this->CakeEmail->emailFormat();
- $this->assertEquals('html', $result);
- $this->setExpectedException('SocketException');
- $result = $this->CakeEmail->emailFormat('invalid');
- }
- /**
- * Tests that it is possible to add charset configuration to a CakeEmail object
- *
- * @return void
- */
- public function testConfigCharset() {
- $email = new CakeEmail();
- $this->assertEquals(Configure::read('App.encoding'), $email->charset);
- $this->assertEquals(Configure::read('App.encoding'), $email->headerCharset);
- $email = new CakeEmail(array('charset' => 'iso-2022-jp', 'headerCharset' => 'iso-2022-jp-ms'));
- $this->assertEquals('iso-2022-jp', $email->charset);
- $this->assertEquals('iso-2022-jp-ms', $email->headerCharset);
- $email = new CakeEmail(array('charset' => 'iso-2022-jp'));
- $this->assertEquals('iso-2022-jp', $email->charset);
- $this->assertEquals('iso-2022-jp', $email->headerCharset);
- $email = new CakeEmail(array('headerCharset' => 'iso-2022-jp-ms'));
- $this->assertEquals(Configure::read('App.encoding'), $email->charset);
- $this->assertEquals('iso-2022-jp-ms', $email->headerCharset);
- }
- /**
- * Tests that the header is encoded using the configured headerCharset
- *
- * @return void
- */
- public function testHeaderEncoding() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $email = new CakeEmail(array('headerCharset' => 'iso-2022-jp-ms', 'transport' => 'Debug'));
- $email->subject('あれ?もしかしての前と');
- $headers = $email->getHeaders(array('subject'));
- $expected = "?ISO-2022-JP?B?GyRCJCIkbCEpJGIkNyQrJDckRiROQTAkSBsoQg==?=";
- $this->assertContains($expected, $headers['Subject']);
- $email->to('[email protected]')->from('[email protected]');
- $result = $email->send('ってテーブルを作ってやってたらう');
- $this->assertContains('ってテーブルを作ってやってたらう', $result['message']);
- }
- /**
- * Tests that the body is encoded using the configured charset
- *
- * @return void
- */
- public function testBodyEncoding() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $email = new CakeEmail(array(
- 'charset' => 'iso-2022-jp',
- 'headerCharset' => 'iso-2022-jp-ms',
- 'transport' => 'Debug'
- ));
- $email->subject('あれ?もしかしての前と');
- $headers = $email->getHeaders(array('subject'));
- $expected = "?ISO-2022-JP?B?GyRCJCIkbCEpJGIkNyQrJDckRiROQTAkSBsoQg==?=";
- $this->assertContains($expected, $headers['Subject']);
- $email->to('[email protected]')->from('[email protected]');
- $result = $email->send('ってテーブルを作ってやってたらう');
- $this->assertContains('Content-Type: text/plain; charset=ISO-2022-JP', $result['headers']);
- $this->assertContains(mb_convert_encoding('ってテーブルを作ってやってたらう','ISO-2022-JP'), $result['message']);
- }
- /**
- * Tests that the body is encoded using the configured charset (Japanese standard encoding)
- *
- * @return void
- */
- public function testBodyEncodingIso2022Jp() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $email = new CakeEmail(array(
- 'charset' => 'iso-2022-jp',
- 'headerCharset' => 'iso-2022-jp',
- 'transport' => 'Debug'
- ));
- $email->subject('あれ?もしかしての前と');
- $headers = $email->getHeaders(array('subject'));
- $expected = "?ISO-2022-JP?B?GyRCJCIkbCEpJGIkNyQrJDckRiROQTAkSBsoQg==?=";
- $this->assertContains($expected, $headers['Subject']);
- $email->to('[email protected]')->from('[email protected]');
- $result = $email->send('①㈱');
- $this->assertTextContains("Content-Type: text/plain; charset=ISO-2022-JP", $result['headers']);
- $this->assertTextNotContains("Content-Type: text/plain; charset=ISO-2022-JP-MS", $result['headers']); // not charset=iso-2022-jp-ms
- $this->assertTextNotContains(mb_convert_encoding('①㈱','ISO-2022-JP-MS'), $result['message']);
- }
- /**
- * Tests that the body is encoded using the configured charset (Japanese irregular encoding, but sometime use this)
- *
- * @return void
- */
- public function testBodyEncodingIso2022JpMs() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $email = new CakeEmail(array(
- 'charset' => 'iso-2022-jp-ms',
- 'headerCharset' => 'iso-2022-jp-ms',
- 'transport' => 'Debug'
- ));
- $email->subject('あれ?もしかしての前と');
- $headers = $email->getHeaders(array('subject'));
- $expected = "?ISO-2022-JP?B?GyRCJCIkbCEpJGIkNyQrJDckRiROQTAkSBsoQg==?=";
- $this->assertContains($expected, $headers['Subject']);
- $email->to('[email protected]')->from('[email protected]');
- $result = $email->send('①㈱');
- $this->assertTextContains("Content-Type: text/plain; charset=ISO-2022-JP", $result['headers']);
- $this->assertTextNotContains("Content-Type: text/plain; charset=iso-2022-jp-ms", $result['headers']); // not charset=iso-2022-jp-ms
- $this->assertContains(mb_convert_encoding('①㈱','ISO-2022-JP-MS'), $result['message']);
- }
- protected function _checkContentTransferEncoding($message, $charset) {
- $boundary = '--alt-' . $this->CakeEmail->getBoundary();
- $result['text'] = false;
- $result['html'] = false;
- $length = count($message);
- for ($i = 0; $i < $length; ++$i) {
- if ($message[$i] == $boundary) {
- $flag = false;
- $type = '';
- while (!preg_match('/^$/', $message[$i])) {
- if (preg_match('/^Content-Type: text\/plain/', $message[$i])) {
- $type = 'text';
- }
- if (preg_match('/^Content-Type: text\/html/', $message[$i])) {
- $type = 'html';
- }
- if ($message[$i] === 'Content-Transfer-Encoding: ' . $charset) {
- $flag = true;
- }
- ++$i;
- }
- $result[$type] = $flag;
- }
- }
- return $result['text'] && $result['html'];
- }
- /**
- * Test CakeEmail::_encode function
- *
- * @return void
- */
- public function testEncode() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $this->CakeEmail->headerCharset = 'ISO-2022-JP';
- $result = $this->CakeEmail->encode('日本語');
- $expected = '=?ISO-2022-JP?B?GyRCRnxLXDhsGyhC?=';
- $this->assertSame($expected, $result);
- $this->CakeEmail->headerCharset = 'ISO-2022-JP';
- $result = $this->CakeEmail->encode('長い長い長いSubjectの場合はfoldingするのが正しいんだけどいったいどうなるんだろう?');
- $expected = "=?ISO-2022-JP?B?GyRCRDkkJEQ5JCREOSQkGyhCU3ViamVjdBskQiROPmw5ZyRPGyhCZm9s?=\r\n" .
- " =?ISO-2022-JP?B?ZGluZxskQiQ5JGskTiQsQDUkNyQkJHMkQCQxJEkkJCRDJD8kJCRJGyhC?=\r\n" .
- " =?ISO-2022-JP?B?GyRCJCYkSiRrJHMkQCRtJCYhKRsoQg==?=";
- $this->assertSame($expected, $result);
- }
- /**
- * Tests charset setter/getter
- *
- * @return void
- */
- public function testCharset() {
- $this->CakeEmail->charset('UTF-8');
- $this->assertSame($this->CakeEmail->charset(), 'UTF-8');
- $this->CakeEmail->charset('ISO-2022-JP');
- $this->assertSame($this->CakeEmail->charset(), 'ISO-2022-JP');
- $charset = $this->CakeEmail->charset('Shift_JIS');
- $this->assertSame($charset, 'Shift_JIS');
- }
- /**
- * Tests headerCharset setter/getter
- *
- * @return void
- */
- public function testHeaderCharset() {
- $this->CakeEmail->headerCharset('UTF-8');
- $this->assertSame($this->CakeEmail->headerCharset(), 'UTF-8');
- $this->CakeEmail->headerCharset('ISO-2022-JP');
- $this->assertSame($this->CakeEmail->headerCharset(), 'ISO-2022-JP');
- $charset = $this->CakeEmail->headerCharset('Shift_JIS');
- $this->assertSame($charset, 'Shift_JIS');
- }
- /**
- * Tests for compatible check.
- * charset property and charset() method.
- * headerCharset property and headerCharset() method.
- */
- public function testCharsetsCompatible() {
- $this->skipIf(!function_exists('mb_convert_encoding'));
- $checkHeaders = array(
- 'from' => true,
- 'to' => true,
- 'cc' => true,
- 'subject' => true,
- );
- // Header Charset : null (used by default UTF-8)
- // Body Charset : ISO-2022-JP
- $oldStyleEmail = $this->_getEmailByOldStyleCharset('iso-2022-jp', null);
- $oldStyleHeaders = $oldStyleEmail->getHeaders($checkHeaders);
- $newStyleEmail = $this->_getEmailByNewStyleCharset('iso-2022-jp', null);
- $newStyleHeaders = $newStyleEmail->getHeaders($checkHeaders);
- $this->assertSame($oldStyleHeaders['From'], $newStyleHeaders['From']);
- $this->assertSame($oldStyleHeaders['To'], $newStyleHeaders['To']);
- $this->assertSame($oldStyleHeaders['Cc'], $newStyleHeaders['Cc']);
- $this->assertSame($oldStyleHeaders['Subject'], $newStyleHeaders['Subject']);
- // Header Charset : UTF-8
- // Boby Charset : ISO-2022-JP
- $oldStyleEmail = $this->_getEmailByOldStyleCharset('iso-2022-jp', 'utf-8');
- $oldStyleHeaders = $oldStyleEmail->getHeaders($checkHeaders);
- $newStyleEmail = $this->_getEmailByNewStyleCharset('iso-2022-jp', 'utf-8');
- $newStyleHeaders = $newStyleEmail->getHeaders($checkHeaders);
- $this->assertSame($oldStyleHeaders['From'], $newStyleHeaders['From']);
- $this->assertSame($oldStyleHeaders['To'], $newStyleHeaders['To']);
- $this->assertSame($oldStyleHeaders['Cc'], $newStyleHeaders['Cc']);
- $this->assertSame($oldStyleHeaders['Subject'], $newStyleHeaders['Subject']);
- // Header Charset : ISO-2022-JP
- // Boby Charset : UTF-8
- $oldStyleEmail = $this->_getEmailByOldStyleCharset('utf-8', 'iso-2022-jp');
- $oldStyleHeaders = $oldStyleEmail->getHeaders($checkHeaders);
- $newStyleEmail = $this->_getEmailByNewStyleCharset('utf-8', 'iso-2022-jp');
- $newStyleHeaders = $newStyleEmail->getHeaders($checkHeaders);
- $this->assertSame($oldStyleHeaders['From'], $newStyleHeaders['From']);
- $this->assertSame($oldStyleHeaders['To'], $newStyleHeaders['To']);
- $this->assertSame($oldStyleHeaders['Cc'], $newStyleHeaders['Cc']);
- $this->assertSame($oldStyleHeaders['Subject'], $newStyleHeaders['Subject']);
- }
- protected function _getEmailByOldStyleCharset($charset, $headerCharset) {
- $email = new CakeEmail(array('transport' => 'Debug'));
- if (! empty($charset)) {
- $email->charset = $charset;
- }
- if (! empty($headerCharset)) {
- $email->headerCharset = $headerCharset;
- }
- $email->from('[email protected]', 'どこかの誰か');
- $email->to('[email protected]', 'どこかのどなたか');
- $email->cc('[email protected]', 'ミク');
- $email->subject('テストメール');
- $email->send('テストメールの本文');
- return $email;
- }
- protected function _getEmailByNewStyleCharset($charset, $headerCharset) {
- $email = new CakeEmail(array('transport' => 'Debug'));
- if (! empty($charset)) {
- $email->charset($charset);
- }
- if (! empty($headerCharset)) {
- $email->headerCharset($headerCharset);
- }
- $email->from('[email protected]', 'どこかの誰か');
- $email->to('[email protected]', 'どこかのどなたか');
- $email->cc('[email protected]', 'ミク');
- $email->subject('テストメール');
- $email->send('テストメールの本文');
- return $email;
- }
- }
|