在Cakephp 3中将邮件发送到多个地址:无法修改现有配置

时间:2016-09-22 11:33:34

标签: php email cakephp cakephp-3.x

我正在尝试向蛋糕php 3中的多个收件人地址发送电子邮件。

我的代码是:

$this->loadModel('AsIndividualDetails');
$EmailDetails = $this-> AsIndividualDetails->find('all',['fields'=>'email']);
$EmailDetails = $EmailDetails->toArray();

  foreach ($EmailDetails as $key => $a) {

        $this->loadModel('DomainEmailDetails');
        $DomainEmailDetails = $this-> DomainEmailDetails->find('all')->first();
        $DomainEmailDetails = $DomainEmailDetails->toArray();
        $host     = 'ssl://'.$DomainEmailDetails['host_name'];
        $username = $DomainEmailDetails['user_name'];
        $password = $DomainEmailDetails['user_password'];
        $port     = $DomainEmailDetails['port'];
        $email_to = $a['email'];
        $senderName = 'abc';
        $email_id   ='xyz110@gmail.com';

        Email::configTransport('WebMail', [
                                                          'className' => 'Smtp',
                                                          'host' => $host,
                                                          'port' => $port,
                                                          'timeout' => 30,
                                                          'username' => $username,
                                                          'password' => $password,
                                                          'client' => null,
                                                          'tls' => null,
                                            ]);
                      ////////// SEND MAIL 
                      $email = new Email('WebMail');
                      $email  ->template('default','default')
                              ->emailFormat('both')
                              ->from([$username => $senderName])
                              ->to($email_to)
                              ->replyTo($email_id)
                              ->subject('Client Message');
                      $response = $email->send('My msg');

                      if($response){
                          echo 'success';
                      }else{
                          echo 'failed';
                      }

} 

当我运行此脚本时,只有一封邮件成功发送,之后出现错误:

Cannot modify an existing config "WebMail" 

如何解决此错误并将邮件发送到所有收件人邮件地址。

2 个答案:

答案 0 :(得分:1)

如果你真的需要在循环中设置配置,你可以在重写config之前删除它:

  use Cake\Mailer\Email;
  Email::dropTransport($key);

有关详细信息,请参阅Class Email API

答案 1 :(得分:0)

在循环之外进行电子邮件配置。每次发送电子邮件时,您都不想尝试建立配置 - 只需一次。然后根据该配置发送所有电子邮件。