Enviando multiplos emails com o PHPmailer

Posted on the abril 25th, 2008 under CakePHP by Renan Lima

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.

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">