Skip to content

Commit

Permalink
Enhancing email component to allow using alias for attachments. Closes
Browse files Browse the repository at this point in the history
  • Loading branch information
ADmad committed Apr 2, 2010
1 parent fdd8a51 commit 1b8165d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 8 deletions.
17 changes: 10 additions & 7 deletions cake/libs/controller/components/email.php
Expand Up @@ -556,15 +556,15 @@ function _createHeader() {
if ($this->delivery == 'smtp') {
$headers['Subject'] = $this->_encode($this->subject);
}

if ($this->messageId !== false) {
if ($this->messageId === true) {
$headers['Message-ID'] = '<' . String::UUID() . '@' . env('HTTP_HOST') . '>';
} else {
$headers['Message-ID'] = $this->messageId;
$headers['Message-ID'] = $this->messageId;
}
}

$headers['X-Mailer'] = $this->xMailer;

if (!empty($this->headers)) {
Expand Down Expand Up @@ -624,14 +624,17 @@ function _formatMessage($message) {
*/
function _attachFiles() {
$files = array();
foreach ($this->attachments as $attachment) {
foreach ($this->attachments as $filename => $attachment) {
$file = $this->_findFiles($attachment);
if (!empty($file)) {
$files[] = $file;
if (is_int($filename)) {
$filename = basename($file);
}
$files[$filename] = $file;
}
}

foreach ($files as $file) {
foreach ($files as $filename => $file) {
$handle = fopen($file, 'rb');
$data = fread($handle, filesize($file));
$data = chunk_split(base64_encode($data)) ;
Expand All @@ -640,7 +643,7 @@ function _attachFiles() {
$this->__message[] = '--' . $this->__boundary;
$this->__message[] = 'Content-Type: application/octet-stream';
$this->__message[] = 'Content-Transfer-Encoding: base64';
$this->__message[] = 'Content-Disposition: attachment; filename="' . basename($file) . '"';
$this->__message[] = 'Content-Disposition: attachment; filename="' . basename($filename) . '"';
$this->__message[] = '';
$this->__message[] = $data;
$this->__message[] = '';
Expand Down
28 changes: 27 additions & 1 deletion cake/tests/cases/libs/controller/components/email.test.php
Expand Up @@ -779,6 +779,32 @@ function testMultibyte() {
*
* @return void
* @access public
*/
function testSendWithAttachments() {
$this->Controller->EmailTest->to = 'postmaster@localhost';
$this->Controller->EmailTest->from = 'noreply@example.com';
$this->Controller->EmailTest->subject = 'Attachment Test';
$this->Controller->EmailTest->replyTo = 'noreply@example.com';
$this->Controller->EmailTest->template = null;
$this->Controller->EmailTest->delivery = 'debug';
$this->Controller->EmailTest->attachments = array(
__FILE__,
'some-name.php' => __FILE__
);
$body = '<p>This is the body of the message</p>';

$this->Controller->EmailTest->sendAs = 'text';
$this->assertTrue($this->Controller->EmailTest->send($body));
$msg = $this->Controller->Session->read('Message.email.message');
$this->assertPattern('/' . preg_quote('Content-Disposition: attachment; filename="email.test.php"') . '/', $msg);
$this->assertPattern('/' . preg_quote('Content-Disposition: attachment; filename="some-name.php"') . '/', $msg);
}

/**
* testSendAsIsNotIgnoredIfAttachmentsPresent method
*
* @return void
* @access public
*/
function testSendAsIsNotIgnoredIfAttachmentsPresent() {
$this->Controller->EmailTest->to = 'postmaster@localhost';
Expand Down Expand Up @@ -812,7 +838,7 @@ function testSendAsIsNotIgnoredIfAttachmentsPresent() {
}

/**
* undocumented function
* testNoDoubleNewlinesInHeaders function
*
* @return void
* @access public
Expand Down

0 comments on commit 1b8165d

Please sign in to comment.