Vou apresentar agora um dica bastante útil para quem usa o cakePHP e precisa enviar e-mails autenticados.
Mas para que servem os e-mails autenticados?
O principal motivo para que você use esta forma de envio é evitar o grande problema de SPAM. Quando você faz um envio autenticado, quer dizer que está usando realmente seu login e senha autênticos. Sendo assim, você confirma que você é realmente proprietário daquele envio.
Mãos à obra!
Considero que você já tenha pleno domínio sobre o cakePHP, caso contrário, sugiro estudar um pouco mais :).
1. Renomeie o arquivo email.php.default para email.php localizado em /app/Config/
2. Abra este arquivo. Perceba que dentro dele exite uma classe chamada EmailConfig e vários atributos para uso. Ele deve está mais ou menos assim:
class EmailConfig {
public $default = array(
'transport' => 'Mail',
'from' => 'you@localhost',
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
);
public $smtp = array(
'transport' => 'Smtp',
'from' => array('site@localhost' => 'My Site'),
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
'username' => 'user',
'password' => 'secret',
'client' => null,
'log' => false,
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
);
public $fast = array(
'from' => 'you@localhost',
'sender' => null,
'to' => null,
'cc' => null,
'bcc' => null,
'replyTo' => null,
'readReceipt' => null,
'returnPath' => null,
'messageId' => true,
'subject' => null,
'message' => null,
'headers' => null,
'viewRender' => null,
'template' => false,
'layout' => false,
'viewVars' => null,
'attachments' => null,
'emailFormat' => null,
'transport' => 'Smtp',
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
'username' => 'user',
'password' => 'secret',
'client' => null,
'log' => true,
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
);
}
3. Vamos focar no atributo $smtp. Basta preencher de acordo com os dados de acesso ao seu e-mail (email, login e senha). Recomendo descomentar as linhas do “charset”. Depois de preenchido ficará mais ou menos assim:
public $smtp = array(
'transport' => 'Smtp',
'from' => array('[email protected]' => 'Tiago Matos'),
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
'username' => '[email protected]',
'password' => '123456',
'client' => null,
'log' => false,
'charset' => 'utf-8',
'headerCharset' => 'utf-8',
);
4. Caso você use algum e-mail que precise utilizar a conexão SSL como GMail ou Hotmail, deve ficar assim:
public $smtp = array(
'transport' => 'Smtp',
'from' => array('[email protected]' => 'Tiago Matos'),
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'timeout' => 30,
'username' => '[email protected]',
'password' => '123456',
'client' => null,
'log' => false,
'charset' => 'utf-8',
'headerCharset' => 'utf-8',
);
E agora, como faço para usar de fato as configurações?
Simples, em qualquer lugar da sua aplicação, na camada Controller, utilize da seguinte forma:
$Email = new CakeEmail('smtp');
$Email->to('[email protected]');
$Email->subject('Assunto');
$Email->send('Mensagem');
Você pode conferir outras opções na documentação do CakePHP. OBS: Se o CakePHP reportar algum erro relacionado à SSL, tente ativar a extensão php_openssl no seu php.ini. Abraços e até a próxima.