2012-04-06 2 views
3

Ich versuche, eine E-Mail mit einem Anhang mit CakePHP 2.0 zu senden.Wie sende ich eine E-Mail mit einem Anhang in CakePHP 2.0?

Die Datei wird vom Benutzer über ein Formular übermittelt.

Bisher habe ich:

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(); 

Die E-Mail sendet und sieht gut aus, aber es gibt keine Befestigung.

Was mache ich falsch?

Danke für jede Hilfe.

+0

Ich versuche immer, Antworten zu akzeptieren, wenn ich kann, aber wie Mark sagte, habe ich einige Fragen, die nicht beantwortet wurden. Vielleicht muss ich aufhören, peinliche Fragen zu stellen! – Sharon

Antwort

3

Aus irgendeinem Grund führt CakePHP keine Anhänge durch, wenn Sie nicht vorher die filePaths angeben.

Ich habe das gleiche Problem, und ich habe es nicht geschafft, viele Antwort auf diese Frage zu finden. Es dauerte eine Weile, um das Problem zu lösen, zu klären, ich habe es funktioniert durch

$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

Ich hatte nie Probleme mit dem Attachment-Pfad. komisch – mark

+0

Danke dafür, aber ich konnte es nicht funktionieren lassen. Wenn ich den Pfad zur temporären Datei ausdrucke, bekomme ich/home/content/57/4087557/tmp/phpblahblah - also sollte ich $ email-> filePaths = array ('/ home/content/57/4087557/tmp/'), Recht? – Sharon

2

unten Skript Put in 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; 
    } 

Danach nur Rufen Sie die Methode sendMailWithAttachment() in einem beliebigen Controller wie

$this->sendMailWithAttachment('tmpl', '[email protected]','[email protected]', 'Subject', $tmpl_DATA_IN_ARRAY); 
auf