2013-10-09 78 views
0

我不知道如何爲所有用戶發送一封電子郵件,我做這在我的控制器:如何發送電子郵件的所有用戶使用CakePHP

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

但我有錯誤「沒有有效的郵件」,並在收聽用戶的郵件後

我的代碼有什麼問題?

+0

選中此http://stackoverflow.com/questions/6211992/ how-to-send-a-multiple-emails-at-a-time-in-cakephp – AnNaMaLaI

+0

謝謝,但我把這個問題的原始代碼解決方案,它不工作。 – UbuntuClash

回答

0

試着改變你的$ BCC塊這樣的:

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

另請參閱CakeEmailDocumentation

1

夫婦的事情我已經在看一眼注意到...

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

在那段代碼中,你在每封電子郵件後都加上一個逗號,所以在你的字符串末尾會有一個逗號。試試這個:

$e = 0; 
foreach ($all as $user) { 
    if($e > 0) $bcc .= ','; 
    $bcc .= $user['Spoutnik']['email']; 
    $e++; 
} 

- 編輯 - 好一點迪帕克,蛋糕的文檔建議你給BCC的數組。製作這樣做更簡單,更高效。

二,$CakeEmail->bcc("$bcc");不需要引號。它應該與他們的工作很好,但我已經看到了蛋糕做一些非常奇怪的事情......嘗試採取出來:

$CakeEmail->bcc($bcc); 

第三,你將所有的電子郵件,BCC這是很好的,但我看不到地址。如果你想發送到很多電子郵件地址而他們沒有看到對方,你仍然需要發送電子郵件到某個地方,即使它的[email protected]。添加解決您發送之前:

$CakeEmail->to('[email protected]'); 
+0

感謝恭維和+1的'to'部分! – Deepak

+0

這些解決方案的工作,仍然是相同的錯誤:( – UbuntuClash

0

我將只使用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'].'') 
)); 
+0

不工作:(我把一個調試: 'code' \t [保護] _bcc =>數組( \t \t '[email protected]'=> '[email protected]', \t \t '[email protected]'=> '[email protected]', \t \t '[email protected]'=> '[email protected]' \t) 'code' – UbuntuClash

+0

如果你正在使用一個數組作爲addBcc,那麼這個鍵必須是電子郵件,值是這個人的名字,但是用我的例子,你可以使用一個字符串addBcc('string')或一個ddBcc(array('email'=>'name')) –

+0

仍然不能工作,$ CakeEmail-> to也不會發送 – UbuntuClash

相關問題