Code Igniter Versão Version 1.5.2 - Guia do Usuário


Classe Email

A classe de Email do Code Igniter suporta as seguintes funcionalidades:

Enviando Emails

Enviar email não é apenas simples, mas você pode configurar isso em tempo de execução ou definir suas preferências em arquivos de configuração.

Veja uma demonstração básica de como enviar um email. Nota: Este exemplo assume que você está enviando o email de um de seus controllers.

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

$this->email->from('voce@seu-site.com', 'Seu Nome');
$this->email->to('alguem@algum-site.com');
$this->email->cc('outro@outro-site.com');
$this->email->bcc('fulano@qualquer-site.com');

$this->email->subject('Teste de Email');
$this->email->message('Testando a classe de email.');

$this->email->send();

echo $this->email->print_debugger();

Definindo as Preferencias de Email

Existem 17 preferências disponíveis para definir como suas mensagens serão enviadas. Você pode defini-las, tanto manualmente como descrito aqui, quanto automaticamente usando seu arquivo de configuração, como descrito abaixo:

Estas preferências são definidas passando um array para a função de inicialização do email. Segue um exemplo de como você poderia definir algumas preferências:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

Nota: A maior parte das preferências possuem valores padrão que serão utilizados caso você não os defina.

Definindo as Preferências de Email em Arquivo de Configuração

Se você preferir não definir as preferências usando o método acima, você pode colocá-las em um arquivo de configuração. Crie um novo arquivo chamado email.php, adicione o array $config neste arquivo. Então, salve no diretório config/email.php da sua aplicação e ele será carregado automaticamente. Você NÃO precisará usar o método $this->email->initialize() se salvar suas preferências no Arquivo de Configuração.

Preferencias de Email

Abaixo segue a lista de todas as preferências que podem ser definidas para o envio de um email.

Preferencia Valor Padrão Opções Descricao
useragentCode IgniterNoneO "user agent".
protocolmailmail, sendmail, ou smtpProtocolo de envio de email.
mailpath/usr/sbin/sendmailNoneCaminho do Sendmail no servidor.
smtp_hostNo DefaultNoneEndereço do Servidor SMTP.
smtp_userNo DefaultNoneUsuário SMTP.
smtp_passNo DefaultNoneSenha SMTP.
smtp_port25NonePorta SMTP.
smtp_timeout5NoneTimeout SMTP (em segundos).
wordwrapTRUETRUE ou FALSE (booleano)Liga a quebra de palavra.
wrapchars76 Número de caracteres para quebrar.
mailtypetexttext or htmlTipo de email. Se enviar em HTML, é necessário enviar uma página web completa. Certifique-se de que não utilizou links ou imagens com caminho relativo, pois se não elas não vão funcionar.
charsetutf-8Tipo de codificação de caracter (utf-8, iso-8859-1, etc.).
validateFALSETRUE ou FALSE (booleano)Se deve validar o endereço de email.
priority31, 2, 3, 4, 5Prioridade do email. 1 = maior. 5 = menor. 3 = normal.
newline\n"\r\n" or "\n"Caracter de quebra de linha. (Use "\r\n" para compatibilizar com o RFC 822).
bcc_batch_modeFALSETRUE or FALSE (boolean)Liga BCC Batch Mode (modo de lote).
bcc_batch_size200NoneNúmero de emails em cada lote BCC.

Referências de Funções de Email

$this->email->from()

Define o endereço de email e o nome da pessoa que envia o email:

$this->email->from('voce@seu-site.com', 'Seu Nome');

$this->email->reply_to()

Define o endereço de resposta (reply-to). Se ocultar esta informação, a informação do "from" será utilizada. Exemplo:

$this->email->reply_to('voce@seu-site.com', 'Seu Nome');

$this->email->to()

Define o(s) endereço(s) de e-mail de destino. Pode ser um único email, uma lista separada por vírgulas ou um array:

$this->email->to('alguem@site.com'); $this->email->to('alguem@site.com, outro@outro-site.com, fulano@site.com'); $list = array('alguem@site.com, outro@outro-site.com, fulano@site.com');

$this->email->to($list);

$this->email->cc()

Define o(s) endereço(s) de email para CC. Funciona como o "to", podendo ser um único email, lista separada por vírgulas ou um array.

$this->email->bcc()

Define o(s) endereço(s) de email para BCC. Funciona como o "to", podendo ser um único email, lista separada por vírgulas ou um array.

$this->email->subject()

Define o Assunto do email:

$this->email->subject('Este é o assunto');

$this->email->message()

Define a mensagem do email:

$this->email->message('Esta é a mensagem');

$this->email->set_alt_message()

Define a mensagem alternativa do email:

$this->email->set_alt_message('Esta é a mensagem alternativa');

Este é uma mensagem opcional que pode ser usada se você enviar email em HTML. Ela permite você especificar uma mensagem alternativa sem formatação HTML, que é adicionada ao cabeçalho do email para pessoas que não aceitam emails HTML. Se você não definir esta mensagem, o Code Igniter vai extraí-la do seu email removendo as tags HTML do mesmo.

$this->email->clear()

Reseta todas as variaveis de email. Esta função deve ser usada se você precisar rodar a função de envio de email em um loop, resetando as informações entre os ciclos. foreach ($list as $name => $address)
{
    $this->email->clear();

    $this->email->to($address);
    $this->email->from('voce@seu-site.com');
    $this->email->subject('Seu nome '.$name);
    $this->email->message('Ola '.$name.' Aqui esta a informacao que voce precisa.');
    $this->email->send();
}

Se você passar TRUE como parametro, todos os anexos também serão resetados:

$this->email->clear(TRUE);

$this->email->send()

Função de envio de email. Retorna o booleano TRUE ou FALSE baseado no sucesso ou falha, permitindo que seja utilizada em condicionais:

if ( ! $this->email->send())
{
    // Gerar Erro
}

$this->email->attach()

Permite que você envie um anexo. Passe o caminho e nome do arquivo como primeiro parametro. Nota: Use o caminho do arquivo, e não sua URL. Para anexar vários arquivos, use a função várias vezes. Por exemplo:

$this->email->attach('/path/to/photo1.jpg');
$this->email->attach('/path/to/photo2.jpg');
$this->email->attach('/path/to/photo3.jpg');

$this->email->send();

$this->email->print_debugger()

Retorna uma string contendo qualquer mensagem de servidor, cabeçalho de email e a própria mensagem. Útil para debug.

Evitando Quebra de Palavra

Se você deixou a quebra de palavras ligado (o que é recomendado para seguir o RFC 822) e você tem um link no corpo do email, ele pode ser quebrado também, fazendo com que o mesmo não seja "clicável" pela pessoa que recebeu o email. O Code Igniter permite que você evite a quebra de palavra em determinadas partes da sua mensagem, dessa forma: The text of your email that
gets wrapped normally.

{unwrap}http://www.some-site.com/a_long_link_that_should_not_be_wrapped.html{/unwrap}

More text that will be
wrapped normally.

Coloque o trecho que você não quer quebrar entre: {unwrap} {/unwrap}