diff --git a/lib/Cake/Network/Email/CakeEmail.php b/lib/Cake/Network/Email/CakeEmail.php index 210f72f6e..07f02728b 100644 --- a/lib/Cake/Network/Email/CakeEmail.php +++ b/lib/Cake/Network/Email/CakeEmail.php @@ -1355,7 +1355,10 @@ class CakeEmail { $msg[] = '--' . $boundary; $msg[] = 'Content-Type: ' . $fileInfo['mimetype']; $msg[] = 'Content-Transfer-Encoding: base64'; - if (!isset($fileInfo['contentDisposition']) || $fileInfo['contentDisposition']) { + if ( + !isset($fileInfo['contentDisposition']) || + $fileInfo['contentDisposition'] + ) { $msg[] = 'Content-Disposition: attachment; filename="' . $filename . '"'; } $msg[] = ''; diff --git a/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php b/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php index cde649558..984c51865 100644 --- a/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php +++ b/lib/Cake/Test/Case/Network/Email/CakeEmailTest.php @@ -640,13 +640,20 @@ class CakeEmailTest extends CakeTestCase { */ public function testAttachments() { $this->CakeEmail->attachments(CAKE . 'basics.php'); - $expected = array('basics.php' => array('file' => CAKE . 'basics.php', 'mimetype' => 'application/octet-stream')); + $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->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')); @@ -937,6 +944,43 @@ class CakeEmailTest extends CakeTestCase { $this->assertContains('--' . $boundary . '--', $result['message']); } +/** + * Test disabling content-disposition. + * + * @return void + */ + public function testSendWithNoContentDispositionAttachments() { + $this->CakeEmail->transport('debug'); + $this->CakeEmail->from('cake@cakephp.org'); + $this->CakeEmail->to('cake@cakephp.org'); + $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 *