3

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

メールは送信され、問題ないように見えますが、添付ファイルがありません。

私は何を間違っていますか?

4

2 に答える 2

3

何らかの理由で、最初に filePaths を指定しない限り、CakePHP は添付を行いません。

私は同じ問題を抱えており、この質問に対する多くの答えを見つけることができませんでした。問題を解決するのにしばらく時間がかかりました。明確にするために、私はそれを機能させました

$this->Email->filePaths  = array('/home/username/');
       $this->Email->attachments =array('article_button.png');
$this->Email->to      = 'em...@email.co.uk';
    $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

于 2012-04-06T15:44:08.333 に答える
2

以下のスクリプトをAppController.phpに入れます

 function sendMailWithAttachment($template = null, $to_email = null, $from_email = null, $subject = null, $contents = array()) {
        $from_email = 'noreply@xyz.com';
        $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;
    }

その後、次のようなコントローラーでメソッド sendMailWithAttachment() を呼び出すだけです

$this->sendMailWithAttachment('tmpl', 'test@abc.com','noreply@xyz.com', 'Subject', $tmpl_DATA_IN_ARRAY); 
于 2013-08-27T20:58:23.630 に答える