【问题标题】:send email to multiple recipient don't work向多个收件人发送电子邮件不起作用
【发布时间】:2020-03-23 09:19:37
【问题描述】:

我尝试向多个收件人发送电子邮件,但没有成功。当我只将它发送给一个收件人时它会起作用。 我将电子邮件地址放在一个数组变量中。

我将从数据库中获得的电子邮件放入数组变量$dt。这是$dt 包含

  array(3) { [0]=> string(21) "a@gmail.com" [1]=> string(21) "b@gmail.com" [2]=> string(24) "c@gmail.com" }

这个我试过了

   //get email from database
   $mail = $this->Hire_model->get_email_recruiter();
      $dt = array();
      for ($i=0; $i < (count($mail)-1) ; $i++) { 
        if ($mail[$i+1]['Email'] == '') {
          $dt[$i] = 'hr.movement@gmail.com';
        }else{
          $dt[$i] = $mail[$i+1]['Email'];
        }       
      }

    //Load PHPMailer Library
     $this->load->library('phpmailer_lib');

     //PHPMailer object
     $mail = $this->phpmailer_lib->load();

     //SMTP configuration
     $mail->isSMTP();
     $mail->Host = 'smtp.gmail.com';
     $mail->SMTPAuth = true;
     $mail->Username = 'hire.movement@gmail.com';
     $mail->Password = '********';
     $mail->SMTPSecure = 'tls';
     $mail->Port = 587;

     $mail->setFrom('info@codexworld.com', 'KompasGramedia');
     $mail->addReplyTo('info@example.com', 'KompasGramedia');

     //Add a recipient
     $mail->addAddress($dt);

     // Email Subject
     $requestor = $this->session->userdata('FullName');
           $mail->Subject = 'Request Promotion by '.$requestor;

     // Set email format to HTML
     $mail->isHTML(true);

     $mailContent = 'Messages';
     $mail->Body = $mailContent;
      // Send email
     if(!$mail->send()){
       echo 'Message could not be sent.';
       echo 'Mailer Error: ' . $mail->ErrorInfo;
     }else{
       echo 'Message has been sent';
     }

我不知道为什么当我使用超过 1 个电子邮件收件人时它不起作用。谁能帮帮我??

【问题讨论】:

  • $mail = $this-&gt;Hire_model-&gt;get_email_recruiter(); 返回什么?你能举个例子吗?
  • 我已经更新了。请检查一下
  • 你为什么要使用'Email'数组键来引用$mail?该数组中没有'Email' 键,因此$dt 变量不会得到任何值,你能告诉这个块上for 循环的目的是什么:for ($i=0; $i &lt; (count($mail)-1) ; $i++)
  • array(3) { [0]=> string(21) "a@gmail.com" [1]=> string(21) "b@gmail.com" [2]=> string(24) "c@gmail.com" } 这是我 vardump($dt) 时的结果。
  • 我想区分email和其他数据,所以我只把email放在$dt中,

标签: php codeigniter email


【解决方案1】:

尝试在循环中添加每个邮件收件人,如下所示:

   //get email from database
   $mail = $this->Hire_model->get_email_recruiter();
      $dt = array();
      for ($i=0; $i < (count($mail)-1) ; $i++) { 
        if ($mail[$i+1]['Email'] == '') {
          $dt[$i] = 'hr.movement@gmail.com';
        }else{
          $dt[$i] = $mail[$i+1]['Email'];
        }       
      }

    //Load PHPMailer Library
     $this->load->library('phpmailer_lib');

     //PHPMailer object
     $mail = $this->phpmailer_lib->load();

     //SMTP configuration
     $mail->isSMTP();
     $mail->Host = 'smtp.gmail.com';
     $mail->SMTPAuth = true;
     $mail->Username = 'hire.movement@gmail.com';
     $mail->Password = '********';
     $mail->SMTPSecure = 'tls';
     $mail->Port = 587;

     $mail->setFrom('info@codexworld.com', 'KompasGramedia');
     $mail->addReplyTo('info@example.com', 'KompasGramedia');

     //Add a recipient(s)
     foreach($dt as $recipient) {
         $mail->addAddress($recipient);
     }

     // Email Subject
     $requestor = $this->session->userdata('FullName');
           $mail->Subject = 'Request Promotion by '.$requestor;

     // Set email format to HTML
     $mail->isHTML(true);

     $mailContent = 'Messages';
     $mail->Body = $mailContent;
      // Send email
     if(!$mail->send()){
       echo 'Message could not be sent.';
       echo 'Mailer Error: ' . $mail->ErrorInfo;
     }else{
       echo 'Message has been sent';
     }

【讨论】:

    猜你喜欢
    • 2012-05-18
    • 2012-03-05
    • 2017-12-05
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多