【问题标题】:How to send a multiple emails at a time in cakephp如何在cakephp中一次发送多封电子邮件
【发布时间】:2011-09-06 21:46:07
【问题描述】:

我需要一次发送多封电子邮件,任何人都可以举个例子吗?或任何想法? 我需要一次向我的所有网站用户发送邮件(邮件内容对所有人都是一样的)

目前我在 for 循环中使用以下代码

        $this->Email->from     = '<no-reply@noreply.com>';
        $this->Email->to       =  $email;
        $this->Email->subject  =   $subject ;
        $this->Email->sendAs   = 'html'; 

【问题讨论】:

    标签: email cakephp cakephp-1.3 cakephp-1.2 bulk


    【解决方案1】:

    我认为你有两种可能:

    foreach

    假设您的UsersController 中有一个函数mail_users

    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     = '<no-reply@noreply.com>';
            $this->Email->to       =  $user['email'];
            $this->Email->subject  =  $subject ;
            $this->Email->sendAs   = 'html';
            $this->Email->send('Your message body');
        }
    }
    

    在此函数中,$this-&gt;Email-&gt;reset() 很重要。

    使用密件抄送

    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     = '<no-reply@noreply.com>';
        $this->Email->bcc      = $bcc;
        $this->Email->subject  = $subject;
        $this->Email->sendAs   = 'html';
        $this->Email->send('Your message body');
    }
    

    现在您可以使用指向/users/mail_users/subject 的链接调用此方法

    有关更多信息,请务必阅读Email Component 上的手册。

    【讨论】:

      【解决方案2】:

      在 Cakephp 2.0 中,我使用了以下代码:

      $result = $email->template($template, 'default')
          ->emailFormat('html')
          ->to(array('first@gmail.com', 'second@gmail.com', 'third@gmail.com')))
          ->from($from_email)
          ->subject($subject)
          ->viewVars($data);
      

      【讨论】:

      • '->to()' 与电子邮件地址数组一起工作,但应该注意的是,电子邮件会将它们作为“to”字段中的地址列表发送 - 而不是作为单个电子邮件正如人们所期待的那样。考虑使用 '->bcc()' 以防万一您不想向您网站上的每个用户发送您网站上每个用户的电子邮件地址。
      • 它的静态方式对电子邮件不是动态的。
      • @IndrajeetSingh 我给出了例子。如果是静态数组,你可以传递你的动态数组。这些都是非常基本的。正是你想要的?因为我直接使用 Cakephp LIST 查询从数据库中获取了数千名用户并将其传递给该 TO 参数。你正在做的方式是 foreach 所以这不是正确的方式。我根据我的工作经验告诉我。但是你投了我的票回答..哈哈哈
      【解决方案3】:

      试试这个:

      $tests = array();
      foreach($users as $user) {
          $tests[] = $user['User']['email'];
      }
      
      $mail = new CakeEmail();
      $mail->to($tests) 
          ->from('<no-reply@noreply.com>')
          ->subject('ALERT')
          ->emailFormat('html')
          ->send('Your message here');
      

      【讨论】:

      • 这不是标准的方式.. 使用 foreach
      • 你能解释一下标准方法吗?
      • 不要使用 foreach.. 如果您有 100000 个用户,那么它的格式不正确。获取用户的电子邮件 ID 并传入 To 字段
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多