2011-06-02 175 views
4

我需要一次發送多封電子郵件,任何人都可以舉例嗎?或任何想法? 我需要一次發送郵件到我的所有網站用戶(郵件內容全部相同)如何在cakephp中一次發送多封電子郵件

目前我使用下面的代碼在for循環中

 $this->Email->from  = '<[email protected]>'; 
     $this->Email->to  = $email; 
     $this->Email->subject = $subject ; 
     $this->Email->sendAs = 'html'; 

回答

3

在CakePHP 2.0 I用下面的代碼:

$result = $email->template($template, 'default') 
    ->emailFormat('html') 
    ->to(array('[email protected]', '[email protected]', '[email protected]'))) 
    ->from($from_email) 
    ->subject($subject) 
    ->viewVars($data); 
+2

' - >到()' 中的電子郵件地址的陣列的工作原理,但應注意的是該電子郵件會將它們作爲「到」字段中的地址列表發送 - 而不是像個人可能期望的那樣發送個別電子郵件。考慮使用' - >密件抄送()',以防萬一您不想向您網站上的每個用戶發送您網站上每個用戶的電子郵件地址。 – Strixy 2013-08-20 20:55:58

+0

它的靜態方式對電子郵件不是動態的。 – 2014-06-24 09:44:39

+0

@IndrajeetSingh我給出了一個例子.. incase的靜態數組,你可以傳遞你的動態數組..這些都是非常基本的。究竟你想要什麼?因爲我從數據庫直接使用CakePHP LIST查詢並傳遞給該TO參數從數據庫中提取了數千用戶。您所做的方式是foreach,所以這不是正確的方式..我告訴我根據我的工作經驗..但是你投了我的票回答..哈哈哈 – AnNaMaLaI 2014-06-25 05:05:33

12

我覺得你有2種可能:

的foreach

讓我們假設你有一個函數mail_users在您UsersController

function mail_users($subject = 'Sample subject') { 
    $users = $this->User->find('all', array('fields' => array('email')); 
    foreach ($users as $user) { 
     $this->Email->reset(); 
     $this->Email->from  = '<[email protected]>'; 
     $this->Email->to  = $user['email']; 
     $this->Email->subject = $subject ; 
     $this->Email->sendAs = 'html'; 
     $this->Email->send('Your message body'); 
    } 
} 

在這個功能$this->Email->reset()是重要的。

使用BCC

function mail_users($subject = 'Sample subject') { 
    $users = $this->User->find('all', array('fields' => array('email')); 
    $bcc = ''; 
    foreach ($users as $user) { 
     $bcc .= $user['email'].','; 
    } 
    $this->Email->from  = '<[email protected]>'; 
    $this->Email->bcc  = $bcc; 
    $this->Email->subject = $subject; 
    $this->Email->sendAs = 'html'; 
    $this->Email->send('Your message body'); 
} 

現在,你可以調用這個方法並鏈接到/users/mail_users/subject

欲瞭解更多信息,請務必仔細閱讀手冊上的Email Component

1

嘗試這種情況:

$tests = array(); 
foreach($users as $user) { 
    $tests[] = $user['User']['email']; 
} 

$mail = new CakeEmail(); 
$mail->to($tests) 
    ->from('<[email protected]>') 
    ->subject('ALERT') 
    ->emailFormat('html') 
    ->send('Your message here'); 
+0

它不是一個標準的方式..用foreach – AnNaMaLaI 2014-06-06 10:43:59

+1

你能解釋一下標準方式嗎? – 2014-06-16 04:27:34

+0

不要使用foreach ..如果你有100000個用戶,那麼它的格式不正確。以用戶電子郵件ID並傳入「收件人」字段 – AnNaMaLaI 2014-06-23 06:01:27

相關問題