Envio de email utilizando a classe PHPMailer

Postado por Rafael Monteiro em 19/10/2009

Cenário

De início você pode estar pensando: "mas porquê vou incluir essa biblioteca se o PHP já possui a função mail() nativamente ?".

Através da classe PHPMailer, temos uma solução de envio de email mais robusta e com maiores funcionalidades, dentre elas a possibilidade de incluir anexos à mensagem, incluir CCs e CCOs, definir tamanho padrão para quebra de palavras (wordwrap) e utilizar um servidor SMTP, sendmail ou QMail para o envio.

O fato de podermos especificar como será feito o envio é particularmente útil no caso de hospedarmos uma aplicação em um ambiente que não possua um servidor de email integrado (cenário incomum mas que pode vir a ocorrer). Nesse caso, é possível, ainda, definirmos um host padrão para envio e um outro redundante, no caso de o primeiro falhar.

Onde encontrar

O download da biblioteca pode ser feito em: http://sourceforge.net/projects/phpmailer/files/.
Nesse endereço existem versões para o PHP 4 e PHP 5.


Exemplo de utilização (adaptado do leiame do projeto):


Configurações de envio

<?php
    require("class.phpmailer.php");
    $mail = new PHPMailer();
    // configuramos o mailer para utilizar SMTP
    $mail->IsSMTP();
    // especificamos o servidor principal e o reserva
    $mail->Host = "smtp1.example.com;smtp2.example.com";
    // ativamos a autenticação no SMTP
    $mail->SMTPAuth = true;
    // usuário(s) de SMTP
    $mail->Username = "usuario_smtp1;usuario_smtp2";
    // senha(s) de SMTP
    $mail->Password = "senha_smtp1;senha_smtp2";



Cabeçalho e conteúdo da mensagem

    /* podemos utilizar qualquer idioma presente na pasta languages,
    facilitando uma eventual depuração de erros */
    $mail->SetLanguage("br");
    $mail->From = "from@example.com";
    $mail->FromName = "Mailer";
    // o nome é opcional
    $mail->AddAddress("josh@example.net", "Josh Adams");
    // quebra de palavra em 50 caracteres
    $mail->WordWrap = 50;
    // anexo - nome é opcional
    $mail->AddAttachment("/tmp/image.jpg", "new.jpg");
    // configuramos o formato de email como HTML
    $mail->IsHTML(true);
    $mail->Subject = "Este é o assunto";
    $mail->Body    = "Este é o corpo da mensagem HTML <b>em negrito!</b>";
    $mail->AltBody = "Este é o texto puro para clientes de email que não suportam HTML";



Envio do email

    if(!$mail->Send())
    {
        echo "A mensagem não pôde ser enviada.<br/>";
        echo "Erro: " . $mail->ErrorInfo;
        exit;
    }
    echo "Mensagem enviada !";
?>

2 Comentário para “Envio de email utilizando a classe PHPMailer”

  1. weslley clyton disse em 19/10/2009 as 07:12

    ola…. no meu arquivo esta dando este erro Language string failed to load: connect_host pode me dizer oq faser??

  2. Rafael Monteiro disse em 19/10/2009 as 07:02

    Olá Weslley,
    Ele não está conseguindo localizar o arquivo de idioma…
    Por padrão, ele busca na pasta “phpmailer/language” por arquivos do tipo “phpmailer.lang-X.php” (onde “X” refere-se à abreviação do idioma que foi definido no setLanguage).
    Verifique se realmente existe um arquivo com o idioma definido nessa pasta.
    Ainda, caso seja necessário definir um outro diretório para os arquivos de idioma, você pode utilizar:
    SetLanguage('br', 'diretório')

Trackback URI | RSS dos comentários

Deixe um comentário

Av. Conselheiro Nébias, 368A, Cj. 413
Vila Mathias - Santos - SP
Telefone: (13) 3345-4580

© 2008 - 2009 Stiod. Todos os direitos reservados.