Enviando multiplos emails com o PHPmailer
Neste artigo vou mostrar como enviar multiplos emails com o PHPmailer adaptado ao CakePHP.
Senti a necessidade em usar este tipo de envio, pois o component do cake que trabalha como PHPmailer não tem este recurso, por tanto, teremos que fazer pequenas mudanças no component.
Se você não viu o artigo que fala como usar o PHPmailer no CakePHP, clique aqui.
Vamos lá!
No component Email, basta substituir a linha que contem $mail->AddAddress($this->to, $this->toName ); por este conjunto de código abaixo:
if(is_array($this->to))
{
foreach($this->to as $item)
{
$mail->AddAddress($item['Email']['to'],$item['Email']['name']);
}
}
else
{
$mail->AddAddress($this->to, $this->toName );
}
No código acima está a mágica em enviar multiplos emails com o PHPmailer.
Este script faz o seguinte:
Ele verifica se a variavel $this->to é um array, se for, ela ler todo o array atravez do foreach e alimenta a função AddAddress, caso a variavel $this->to não seja um array, o script age normalmente, como antes. Ou seja, esta mudança no código não vai fazer a diferença alguma em outras aplicações suas que não utilizam envio de multiplos emails com o PHPmailer.
Feito!
Agora vamos trabalhar no controller.
Onde seria $this->Email->to, será um array, veja o exemplo abaixo:
$email['Email']['to'] = ‘webrenanlima@gmail.com’;
$email['Email']['name'] = “Renan Lima”;
Para gerar diversos emails dentro de um loop, basta seguir o exemplo abaixo:
$result = $this->Usuario->findAll();
$i=0;
foreach($result['CoorporativoUsuario'] as $item)
{
$email[]['Email']['to'] = ‘webrenanlima@gmail.com’;
$email[]['Email']['name'] = “Renan Lima”;
$i++;
}
Se você quiser enviar um email para uma única pessoa, basta usar o método tradicional: $this->Email->to.
Para você que não viu o tutorial que explica como usar o PHPmailer com o cakephp, veja aqui na matéria anterior: PHPmailer com CakePHP.