PHPmailer com CakePHP
Neste post veremos como usar o já consagrado PHPmailer com o outro consagrado(rs) chamado CakePHP.
1. Baixe o PHPmailer neste link: PHPmailer
2. No CakePHP, crie uma pasta chamada ‘phpmailer’ dentro de ‘app/vendors’, ficando desta forma: app/vendors/phpmailer. Agora coloque dentro desta pasta os arquivos ‘class.phpmailer.php’ e ‘class.smtp.php’.
3. Crie um component chamado ‘Email’, ficando neste caminho: app/controllers/components/email.php.
4. Dentro do arquivo email.php, coloque o código que está dentro deste arquivo: Ver código de email.php
OBS: No arquivo email.php, eu fiz umas modificações e isso fica a critério seu.
Eu comentei as seguintes linhas:
//var $smtpUserName = ”; // SMTP username
//var $smtpPassword = ”; // SMTP password
OBS 2: A porta a ser usada normalmente é 25 mesmo.
5. No controller você deve invocar o component criado no passo anterior da seguinte forma: var $components = array(‘Email’);
Script de envio para ser usado no controller e dentro de um método é claro:
$this->Email->template = ‘email/confirm’; // Template a ser usado no envio
$this->set(‘data’, $data); // Conteúdo dinamico a ser passado para o template (opcional)
$this->Email->to = ‘webrenanlima@gmail.com’; // Destinatário
$this->Email->subject = ‘Seu assunto’; // Assunto do email
$this->Email->attach($fully_qualified_filename, optionally $new_name_when_attached);
// Para enviar arquivos em anexo (opcional)
$result = $this->Email->send(); // necessário para enviar os emails
Na prática
Vou explicar aqui como funciona o PHPmailer com CakePHP na prática.
Você deverá criar dois arquivos(template) para o email, um com o conteúdo em HTML e outro somente com texto.
Como no script acima você informou que o template a ser usado será “email/confirm”, isso quer dizer que existirá dois arquivos dentro neste caminho: ‘view/email/’, um chamado ‘confirm_html.thtml’ e outro como ‘confirm_text.thtml’.
A lógica é simples, o valor do template é email(pasta)/nome_do_arquivo, não é preciso informar o nome completo( ex: confirm_html.thtml). Ok?
Não é obrigatório você criar os templates dentro da pasta ‘email’, eu mesmo coloco os templates dentro da pasta da view de seu controller.
Mas simples que usar o PHPmailer sem o cakePHP. rs
Além de ficar mais organizado (como tudo no cakePHP).
Artigo baseado em http://bakery.cakephp.org/articles/view/sending-email-with-phpmailer
Na linha 73, troque aquele metodo “vendor” que foi descontiuado na versão 1.2 por:
App::import(‘Vendor’, ‘phpmailer’, array(‘file’ => ‘phpmailer’.DS.’class.phpmailer.php’));
Veja também como enviar multiplos emails com o PHPmailer.
Muito bom este post.