Configuração para envio de email por SMTP no CodeIgniter

Configuração para envio de email por SMTP no CodeIgniter

19/12/2019 0 Por Jonathan Lamim

Essa é uma dica rápida, apenas pra mostrar as configurações necessárias para envio de emails via SMTP corretamente, utilizando a biblioteca Email, uma das muitas bibliotecas nativas do CodeIgniter.

A primeira coisa a se fazer é carregar a biblioteca, seja no autoload ou no método em que suas funcionalidades serão utilizadas.

Autoload

$autoload['libraries'] = array('email');

Manualmente

$this->load->library('email');

Feito isso, as configurações de SMTP que devem ser aplicadas através do arquivo email.php, que deve ser criado em application/config, são:

$config['smtp_host'] = "seu_host";
$config['smtp_user'] = "seu_email";
$config['smtp_pass'] = "sua_senha";
$config['smtp_port'] = "587";
$config['protocol'] = "smtp";

Basicamente essas são as configurações necessárias para envio de emails usando o protocolo SMTP, mas pode ser que alguns servidores estejam configurados para usarem a RFC 822, que define formato padrão para mensagens de texto (e-mail), e então pode ser que a mensagem chegue quebrada, ou nem seja enviada.

Para se prevenir desse tipo de problema, utilize as configurações abaixo sempre que utilizar o protocolo SMTP no CodeIgniter.

$config['newline']  = "\r\n";
$config['crlf']     = "\r\n";
$config['charset']  = 'UTF-8';

Para enviar o email você irá utilizar o método $this->email->send().

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

$this->email->send();

O método $this->email->send() retorna true se o envio foi feito com sucesso e false caso tenha ocorrido algum problema. E caso queira informações sobre o processo de envio você pode obter os cabeçalhos da operação através do método $this->email->print_debugger(), que deve ser chamado após o método $this->email->send().

Até a próxima dica!