2011-06-02 121 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

相关问题