0

すべてのユーザーに1つのメールを送信する方法がわかりません。コントローラーでこれを行います:

// Init
$data = $this->request->data['Email'];
$d = array(
    'subject' => $data['subject'],
    'message' => $data['message']
);

// QUERY
$all = $this->Spoutnik->find('all', array(
    'conditions' => array(
        'Spoutnik.role >=' => '1'
    ),
    'fields' => array('Spoutnik.email')
));
$this->set(compact('all'));

// list
$bcc = '';
foreach ($all as $user) {
    $bcc .= $user['Spoutnik']['email'].',';
}

// MAIL
App::uses('CakeEmail', 'Network/Email');
$CakeEmail = new CakeEmail('default');

$website_short_name = Configure::read('website.short_name');
$CakeEmail->bcc("$bcc");
$CakeEmail->subject(''.$website_short_name.' :: '.$d['subject'].'');

$CakeEmail->viewVars(array(
    'message' => (''.$d['message'].'')
));

$CakeEmail->emailFormat('html');
$CakeEmail->template('message_direct');

// final
$CakeEmail->send();

しかし、「有効なメールがありません」というエラーがあり、ユーザーのメールのリストの後に

私のコードで何が間違っていますか?

4

3 に答える 3

1

CakeEmail のaddBcc関数を使用して、ループを変更します。

App::uses('CakeEmail', 'Network/Email');
$CakeEmail = new CakeEmail('default');

// list
foreach ($all as $user) {
    $CakeEmail->addBcc($user['Spoutnik']['email']);
}

$website_short_name = Configure::read('website.short_name');
$CakeEmail->subject(''.$website_short_name.' :: '.$d['subject'].'');

$CakeEmail->viewVars(array(
    'message' => (''.$d['message'].'')
));
于 2013-10-09T11:39:44.623 に答える