2012-04-06 2 views
3

CakePHP 2.0을 사용하여 첨부 파일이 포함 된 이메일을 보내려고합니다.CakePHP 2.0에 첨부 파일이있는 이메일을 보내려면 어떻게해야합니까?

파일은 양식을 통해 사용자가 제출합니다.

지금까지 내가 가진 :

App::uses('CakeEmail', 'Network/Email'); 
$email = new CakeEmail(); 
$email->attachments = array($this->data['Opportunity']['resume_file']['tmp_name']); 
$email->viewVars(array('name' => $this->data['Opportunity']['name'])); 
$email->template('application') 
    ->emailFormat('html') 
    ->to(TEST_CONTACT) 
    ->from(EMAIL_CONTACT) 
    ->subject('New application received') 
    ->send(); 

이메일을 전송하고 잘 보이는,하지만 첨부 파일이 없습니다.

내가 뭘 잘못하고 있니?

도움 주셔서 감사합니다.

+0

나는 할 수있을 때마다 항상 대답을 받아들이려고 노력하지만 Mark가 말했듯이 나는 대답하지 않은 질문이 많다. 어색한 질문을하는 것을 그만 두어야 할 수도 있습니다! – Sharon

답변

3

filePaths가 먼저 나와 있지 않으면 어떤 이유로 CakePHP에서 첨부 파일을 만들지 않습니다.

나는 같은 문제가있어서 에 대한 많은 답을 찾을 수 없었다. 내가 그 직후 AppController.php

function sendMailWithAttachment($template = null, $to_email = null, $from_email = null, $subject = null, $contents = array()) { 
     $from_email = '[email protected]'; 
     $email = new CakeEmail(); 
     $result = $email->template($template, 'default') 
       ->emailFormat('html') 
       ->to($to_email) 
       ->from($from_email) 
       ->subject($subject) 
      ->attachments('your-server-path/filename.extenstion') 
       ->viewVars($contents); 
     if ($email->send('default')) { 
      return true; 
     } 
     return false; 
    } 

에 스크립트 아래에 넣어

$this->Email->filePaths = array('/home/username/'); 
     $this->Email->attachments =array('article_button.png'); 
$this->Email->to  = '[email protected]'; 
    $this->Email->subject = 'Something'; 
    $this->Email->replyTo = $client['Client']['email']; 
    $this->Email->from = $client['Client']['email']; 
    $this->Email->sendAs = 'html'; 

    if($this->Email->send('Testing', null, null)){ 
     die('Email Sent!'); 
    }else{ 
     die('Failed to send email'); 
    } 

http://groups.google.com/group/cake-php/browse_thread/thread/93a9c9467733fe38?pli=1

+0

첨부 파일 경로에 문제가 없었습니다. 이상한 – mark

+0

고마워요.하지만 작동하게 만들지 못했습니다. 임시 파일의 경로를 출력 할 때/home/content/57/4087557/tmp/phpblahblah를 얻었으므로 $ email-> filePaths = array ('/ home/content/57/4087557/tmp/'), 권리? – Sharon

2

에 의해 작동 그것을 가지고, 가 명확하게 문제를 해결하기 위해 나에게 렸어요 모든 컨트롤러에서 sendMailWithAttachment() 메서드를 호출하십시오.

$this->sendMailWithAttachment('tmpl', '[email protected]','[email protected]', 'Subject', $tmpl_DATA_IN_ARRAY); 
관련 문제