ÿØÿà JFIF ÿá Exif MM * ÿÛ C
Server IP : 199.250.214.225 / Your IP : 52.14.223.136 Web Server : Apache System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : nicngo5 ( 1001) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/nicngo5/laravelvue/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ |
Upload File : |
<?php class Swift_Mime_SimpleMessageAcceptanceTest extends \PHPUnit\Framework\TestCase { protected function setUp() { Swift_Preferences::getInstance()->setCharset(null); //TODO: Test with the charset defined } public function testBasicHeaders() { /* -- RFC 2822, 3.6. */ $message = $this->createMessage(); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString(), '%s: Only required headers, and non-empty headers should be displayed' ); } public function testSubjectIsDisplayedIfSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testDateCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $id = $message->getId(); $date = new DateTimeImmutable(); $message->setDate($date); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testMessageIdCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setId('foo@bar'); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <foo@bar>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testContentTypeCanBeChanged() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setContentType('text/html'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/html'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testCharsetCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setContentType('text/html'); $message->setCharset('iso-8859-1'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/html; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testFormatCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFormat('flowed'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain; format=flowed'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testEncoderCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setContentType('text/html'); $message->setEncoder( new Swift_Mime_ContentEncoder_PlainContentEncoder('7bit') ); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/html'."\r\n". 'Content-Transfer-Encoding: 7bit'."\r\n", $message->toString() ); } public function testFromAddressCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom('chris.corbyn@swiftmailer.org'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: chris.corbyn@swiftmailer.org'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testFromAddressCanBeSetWithName() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris Corbyn']); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testMultipleFromAddressesCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', 'mark@swiftmailer.org', ]); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>, mark@swiftmailer.org'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testReturnPathAddressCanBeSet() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testEmptyReturnPathHeaderCanBeUsed() { $message = $this->createMessage(); $message->setReturnPath(''); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Return-Path: <>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testSenderCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setSender('chris.corbyn@swiftmailer.org'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Sender: chris.corbyn@swiftmailer.org'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testSenderCanBeSetWithName() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setSender(['chris.corbyn@swiftmailer.org' => 'Chris']); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Sender: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testReplyToCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo(['chris@w3style.co.uk' => 'Myself']); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testMultipleReplyAddressCanBeUsed() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo([ 'chris@w3style.co.uk' => 'Myself', 'my.other@address.com' => 'Me', ]); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>, Me <my.other@address.com>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testToAddressCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo([ 'chris@w3style.co.uk' => 'Myself', 'my.other@address.com' => 'Me', ]); $message->setTo('mark@swiftmailer.org'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>, Me <my.other@address.com>'."\r\n". 'To: mark@swiftmailer.org'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testMultipleToAddressesCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo([ 'chris@w3style.co.uk' => 'Myself', 'my.other@address.com' => 'Me', ]); $message->setTo([ 'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>, Me <my.other@address.com>'."\r\n". 'To: mark@swiftmailer.org, Chris Corbyn <chris@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testCcAddressCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo([ 'chris@w3style.co.uk' => 'Myself', 'my.other@address.com' => 'Me', ]); $message->setTo([ 'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn', ]); $message->setCc('john@some-site.com'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>, Me <my.other@address.com>'."\r\n". 'To: mark@swiftmailer.org, Chris Corbyn <chris@swiftmailer.org>'."\r\n". 'Cc: john@some-site.com'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testMultipleCcAddressesCanBeSet() { $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo([ 'chris@w3style.co.uk' => 'Myself', 'my.other@address.com' => 'Me', ]); $message->setTo([ 'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn', ]); $message->setCc([ 'john@some-site.com' => 'John West', 'fred@another-site.co.uk' => 'Big Fred', ]); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>, Me <my.other@address.com>'."\r\n". 'To: mark@swiftmailer.org, Chris Corbyn <chris@swiftmailer.org>'."\r\n". 'Cc: John West <john@some-site.com>, Big Fred <fred@another-site.co.uk>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testBccAddressCanBeSet() { //Obviously Transports need to setBcc(array()) and send to each Bcc recipient // separately in accordance with RFC 2822/2821 $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo([ 'chris@w3style.co.uk' => 'Myself', 'my.other@address.com' => 'Me', ]); $message->setTo([ 'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn', ]); $message->setCc([ 'john@some-site.com' => 'John West', 'fred@another-site.co.uk' => 'Big Fred', ]); $message->setBcc('x@alphabet.tld'); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>, Me <my.other@address.com>'."\r\n". 'To: mark@swiftmailer.org, Chris Corbyn <chris@swiftmailer.org>'."\r\n". 'Cc: John West <john@some-site.com>, Big Fred <fred@another-site.co.uk>'."\r\n". 'Bcc: x@alphabet.tld'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testMultipleBccAddressesCanBeSet() { //Obviously Transports need to setBcc(array()) and send to each Bcc recipient // separately in accordance with RFC 2822/2821 $message = $this->createMessage(); $message->setSubject('just a test subject'); $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']); $message->setReplyTo([ 'chris@w3style.co.uk' => 'Myself', 'my.other@address.com' => 'Me', ]); $message->setTo([ 'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn', ]); $message->setCc([ 'john@some-site.com' => 'John West', 'fred@another-site.co.uk' => 'Big Fred', ]); $message->setBcc(['x@alphabet.tld', 'a@alphabet.tld' => 'A']); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris <chris.corbyn@swiftmailer.org>'."\r\n". 'Reply-To: Myself <chris@w3style.co.uk>, Me <my.other@address.com>'."\r\n". 'To: mark@swiftmailer.org, Chris Corbyn <chris@swiftmailer.org>'."\r\n". 'Cc: John West <john@some-site.com>, Big Fred <fred@another-site.co.uk>'."\r\n". 'Bcc: x@alphabet.tld, A <a@alphabet.tld>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString() ); } public function testStringBodyIsAppended() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $message->setBody( 'just a test body'."\r\n". 'with a new line' ); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'just a test body'."\r\n". 'with a new line', $message->toString() ); } public function testStringBodyIsEncoded() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $message->setBody( 'Just s'.pack('C*', 0xC2, 0x01, 0x01).'me multi-'."\r\n". 'line message!' ); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'Just s=C2=01=01me multi-'."\r\n". 'line message!', $message->toString() ); } public function testChildrenCanBeAttached() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = $message->getDate(); $boundary = $message->getBoundary(); $part1 = $this->createMimePart(); $part1->setContentType('text/plain'); $part1->setCharset('iso-8859-1'); $part1->setBody('foo'); $message->attach($part1); $part2 = $this->createMimePart(); $part2->setContentType('text/html'); $part2->setCharset('iso-8859-1'); $part2->setBody('test <b>foo</b>'); $message->attach($part2); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/plain; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/html; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'test <b>foo</b>'. "\r\n\r\n". '--'.$boundary.'--'."\r\n", $message->toString() ); } public function testAttachmentsBeingAttached() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = preg_quote($message->getDate()->format('r'), '~'); $boundary = $message->getBoundary(); $part = $this->createMimePart(); $part->setContentType('text/plain'); $part->setCharset('iso-8859-1'); $part->setBody('foo'); $message->attach($part); $attachment = $this->createAttachment(); $attachment->setContentType('application/pdf'); $attachment->setFilename('foo.pdf'); $attachment->setBody('<pdf data>'); $message->attach($attachment); $this->assertRegExp( '~^'. 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/mixed;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="(.*?)"'."\r\n". "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: text/plain; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--\\1--'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: application/pdf; name=foo.pdf'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-Disposition: attachment; filename=foo.pdf'."\r\n". "\r\n". preg_quote(base64_encode('<pdf data>'), '~'). "\r\n\r\n". '--'.$boundary.'--'."\r\n". '$~D', $message->toString() ); } public function testAttachmentsAndEmbeddedFilesBeingAttached() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = preg_quote($message->getDate()->format('r'), '~'); $boundary = $message->getBoundary(); $part = $this->createMimePart(); $part->setContentType('text/plain'); $part->setCharset('iso-8859-1'); $part->setBody('foo'); $message->attach($part); $attachment = $this->createAttachment(); $attachment->setContentType('application/pdf'); $attachment->setFilename('foo.pdf'); $attachment->setBody('<pdf data>'); $message->attach($attachment); $file = $this->createEmbeddedFile(); $file->setContentType('image/jpeg'); $file->setFilename('myimage.jpg'); $file->setBody('<image data>'); $message->attach($file); $cid = $file->getId(); $this->assertRegExp( '~^'. 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/mixed;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="(.*?)"'."\r\n". "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: text/plain; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: multipart/related;'."\r\n". ' boundary="(.*?)"'."\r\n". "\r\n\r\n". '--\\2'."\r\n". 'Content-Type: image/jpeg; name=myimage.jpg'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-ID: <'.$cid.'>'."\r\n". 'Content-Disposition: inline; filename=myimage.jpg'."\r\n". "\r\n". preg_quote(base64_encode('<image data>'), '~'). "\r\n\r\n". '--\\2--'."\r\n". "\r\n\r\n". '--\\1--'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: application/pdf; name=foo.pdf'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-Disposition: attachment; filename=foo.pdf'."\r\n". "\r\n". preg_quote(base64_encode('<pdf data>'), '~'). "\r\n\r\n". '--'.$boundary.'--'."\r\n". '$~D', $message->toString() ); } public function testComplexEmbeddingOfContent() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = preg_quote($message->getDate()->format('r'), '~'); $boundary = $message->getBoundary(); $attachment = $this->createAttachment(); $attachment->setContentType('application/pdf'); $attachment->setFilename('foo.pdf'); $attachment->setBody('<pdf data>'); $message->attach($attachment); $file = $this->createEmbeddedFile(); $file->setContentType('image/jpeg'); $file->setFilename('myimage.jpg'); $file->setBody('<image data>'); $part = $this->createMimePart(); $part->setContentType('text/html'); $part->setCharset('iso-8859-1'); $part->setBody('foo <img src="'.$message->embed($file).'" />'); $message->attach($part); $cid = $file->getId(); $this->assertRegExp( '~^'. 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/mixed;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: multipart/related;'."\r\n". ' boundary="(.*?)"'."\r\n". "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: text/html; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo <img src=3D"cid:'.$cid.'" />'.//=3D is just = in QP "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: image/jpeg; name=myimage.jpg'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-ID: <'.$cid.'>'."\r\n". 'Content-Disposition: inline; filename=myimage.jpg'."\r\n". "\r\n". preg_quote(base64_encode('<image data>'), '~'). "\r\n\r\n". '--\\1--'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: application/pdf; name=foo.pdf'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-Disposition: attachment; filename=foo.pdf'."\r\n". "\r\n". preg_quote(base64_encode('<pdf data>'), '~'). "\r\n\r\n". '--'.$boundary.'--'."\r\n". '$~D', $message->toString() ); } public function testAttachingAndDetachingContent() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = preg_quote($message->getDate()->format('r'), '~'); $boundary = $message->getBoundary(); $part = $this->createMimePart(); $part->setContentType('text/plain'); $part->setCharset('iso-8859-1'); $part->setBody('foo'); $message->attach($part); $attachment = $this->createAttachment(); $attachment->setContentType('application/pdf'); $attachment->setFilename('foo.pdf'); $attachment->setBody('<pdf data>'); $message->attach($attachment); $file = $this->createEmbeddedFile(); $file->setContentType('image/jpeg'); $file->setFilename('myimage.jpg'); $file->setBody('<image data>'); $message->attach($file); $cid = $file->getId(); $message->detach($attachment); $this->assertRegExp( '~^'. 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/plain; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: multipart/related;'."\r\n". ' boundary="(.*?)"'."\r\n". "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: image/jpeg; name=myimage.jpg'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-ID: <'.$cid.'>'."\r\n". 'Content-Disposition: inline; filename=myimage.jpg'."\r\n". "\r\n". preg_quote(base64_encode('<image data>'), '~'). "\r\n\r\n". '--\\1--'."\r\n". "\r\n\r\n". '--'.$boundary.'--'."\r\n". '$~D', $message->toString(), '%s: Attachment should have been detached' ); } public function testBoundaryDoesNotAppearAfterAllPartsAreDetached() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = $message->getDate(); $boundary = $message->getBoundary(); $part1 = $this->createMimePart(); $part1->setContentType('text/plain'); $part1->setCharset('iso-8859-1'); $part1->setBody('foo'); $message->attach($part1); $part2 = $this->createMimePart(); $part2->setContentType('text/html'); $part2->setCharset('iso-8859-1'); $part2->setBody('test <b>foo</b>'); $message->attach($part2); $message->detach($part1); $message->detach($part2); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n", $message->toString(), '%s: Message should be restored to orignal state after parts are detached' ); } public function testCharsetFormatOrDelSpAreNotShownWhenBoundaryIsSet() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $message->setCharset('utf-8'); $message->setFormat('flowed'); $message->setDelSp(true); $id = $message->getId(); $date = $message->getDate(); $boundary = $message->getBoundary(); $part1 = $this->createMimePart(); $part1->setContentType('text/plain'); $part1->setCharset('iso-8859-1'); $part1->setBody('foo'); $message->attach($part1); $part2 = $this->createMimePart(); $part2->setContentType('text/html'); $part2->setCharset('iso-8859-1'); $part2->setBody('test <b>foo</b>'); $message->attach($part2); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/plain; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/html; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'test <b>foo</b>'. "\r\n\r\n". '--'.$boundary.'--'."\r\n", $message->toString() ); } public function testBodyCanBeSetWithAttachments() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $message->setContentType('text/html'); $message->setCharset('iso-8859-1'); $message->setBody('foo'); $id = $message->getId(); $date = $message->getDate()->format('r'); $boundary = $message->getBoundary(); $attachment = $this->createAttachment(); $attachment->setContentType('application/pdf'); $attachment->setFilename('foo.pdf'); $attachment->setBody('<pdf data>'); $message->attach($attachment); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/mixed;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/html; charset=iso-8859-1'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: application/pdf; name=foo.pdf'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-Disposition: attachment; filename=foo.pdf'."\r\n". "\r\n". base64_encode('<pdf data>'). "\r\n\r\n". '--'.$boundary.'--'."\r\n", $message->toString() ); } public function testHtmlPartAlwaysAppearsLast() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $id = $message->getId(); $date = $message->getDate()->format('r'); $boundary = $message->getBoundary(); $part1 = $this->createMimePart(); $part1->setContentType('text/html'); $part1->setBody('foo'); $part2 = $this->createMimePart(); $part2->setContentType('text/plain'); $part2->setBody('bar'); $message->attach($part1); $message->attach($part2); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'bar'. "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/html'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--'.$boundary.'--'."\r\n", $message->toString() ); } public function testBodyBecomesPartIfOtherPartsAttached() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $message->setContentType('text/html'); $message->setBody('foo'); $id = $message->getId(); $date = $message->getDate()->format('r'); $boundary = $message->getBoundary(); $part2 = $this->createMimePart(); $part2->setContentType('text/plain'); $part2->setBody('bar'); $message->attach($part2); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'bar'. "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: text/html'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'foo'. "\r\n\r\n". '--'.$boundary.'--'."\r\n", $message->toString() ); } public function testBodyIsCanonicalized() { $message = $this->createMessage(); $message->setReturnPath('chris@w3style.co.uk'); $message->setSubject('just a test subject'); $message->setFrom([ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]); $message->setBody( 'just a test body'."\n". 'with a new line' ); $id = $message->getId(); $date = $message->getDate(); $this->assertEquals( 'Return-Path: <chris@w3style.co.uk>'."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date->format('r')."\r\n". 'Subject: just a test subject'."\r\n". 'From: Chris Corbyn <chris.corbyn@swiftmailer.org>'."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/plain'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'just a test body'."\r\n". 'with a new line', $message->toString() ); } protected function createMessage() { return new Swift_Message(); } protected function createMimePart() { return new Swift_MimePart(); } protected function createAttachment() { return new Swift_Attachment(); } protected function createEmbeddedFile() { return new Swift_EmbeddedFile(); } }