2016-09-22 8 views
1

Я пытаюсь отправить электронную почту к многократному адреса получателя в торт PHP 3.Отправить письмо на несколько адресов в CakePHP 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 ='[email protected]'; 

     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" 

Как решить эту ошибку и отправить почту на всех получателей электронной почты.

ответ

0

Внесите свой адрес электронной почты в неточный контур. Вы не хотите пытаться установить конфигурацию каждый раз, когда вы отправляете электронные письма - всего один раз. Затем отправьте все электронные письма на основе этой конфигурации.

+0

Вот документы по электронной почте, а также транспортирует. [Email Transports] (http://book.cakephp.org/3.0/en/core-libraries/email.html#configuring-transports) –

+0

Что делать, если я хочу отправить электронное письмо нескольким пользователям с несколькими настройками –

+0

Вам нужно для создания конфигураций отдельно. Затем, основываясь, однако, вы определяете, какая конфигурация переходит к человеку, вы отправите электронное письмо с этой конфигурацией. @AjayKrishnaDutta –

0

Если вам действительно нужно установить конфигурации внутри цикла, вы можете удалить его, прежде чем переписать конфиг:

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

Смотрите Class Email API для получения дополнительной информации