Skip to content

Como enviar e-mail autenticado usando PHPMailer

Como enviar e-mail autenticado usando PHPMailer

Review of:

Reviewed by:
Rating:
5
On 4 de setembro de 2014
Last modified:4 de setembro de 2014

Summary:

Fala galera!

Hoje vamos aprender a enviar e-mail autenticado usando PHPMailer, um script desenvolvido por Andy Prevost e Marcus Bointon para envio de e-mails pelo PHP.

Atualmente na versão 5.2.8, essa classe permite enviar e-mails pelo PHP através dos protocolos POP3 ou SMTP, e é amplamente recomendado e melhor que a função padrão mail(). Faça download da classe PHPMailer aqui.

Enviar e-mail autenticado usando PHPMailer

Primeiramente, precisamos chamar a classe no nosso script PHP. Neste tutorial, vamos utilizar a versão 5.1.

require_once('class.phpmailer.php');

O próximo passo será criar uma instância da classe PHP, passando um parâmetro único true, que indica que os erros ocorridos deverão ser retornados.

$mail = new PHPMailer(true);

Em seguida, vamos indicar que usaremos o protocolo SMTP para enviar os e-mails.

$mail->IsSMTP();

Agora vamos começar a configurar a classe para o envio. Porém, precisamos fazer essas configurações dentro de um try/catch. O try/catch é utilizado para tratamento de exceções e erros de execução sempre que um método de alguma classe é passível de causar algum erro.

try {

A primeira configuração é o endereço do servidor SMTP. Isso varia de acordo com as configurações do servidor de envio. No nosso exemplo, vamos configurar utilizando “localhost”. (Lembrando que a PHPMailer não funciona em ambiente local na sua máquina)

$mail->Host = "localhost";

Depois, vamos informar à classe que não vamos debugar o código.

$mail->SMTPDebug = false;

Agora sim vamos configurar o envio. E é aqui que está o pulo do gato!
São 3 parâmetros que devemos passar para que o e-mail seja autenticado:

$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Port = 587;

O primeiro parâmetro indica que vamos autenticar o e-mail que será enviado. Mas vamos complementar esse parâmetro com os dois próximos, que indicam o tipo de segurança e a porta utilizados. Em ambos, a configuração pode variar de acordo com o servidor. Uma dica rápida: essa configuração é utilizada para enviar pelo servidor do GMAIL (obrigado, de nada)!

Continuando, vamos agora passar os dados de acesso (usuário e senha).

$mail->Username = "seuemail@dominio.com.br";
$mail->Password = "suasenha";

Vamos agora adicionar o destinatário do e-mail.

$mail->AddAddress("destinatario@dominio.com.br", "Destinatário");

E agora o remetente. São duas funções: uma indica quem enviou, e a outra indica para quem deve ser respondido.

$mail->SetFrom("remetente@dominio.com.br", "Remetente");
$mail->AddReplyTo("remetente@dominio.com.br", "Remetente");

Em seguida, assunto do e-mail.

$mail->Subject = "Assunto do e-mail";

BÔNUS: vamos também configurar um anexo. Neste caso, vamos utilizar uma variável $anexo, que pegou um arquivo enviado de um formulário prévio.

$mail->AddAttachment($anexo["tmp_name"],$anexo["name"],"base64",$anexo["type"]);

PS: “base64” é o tipo de codificação que será utilizada para enviar o arquivo.

Agora vamos adicionar a mensagem do e-mail. Podemos fazê-lo em duas formas: e-mail com HTML, e e-mail padrão, sem formatação. Caso o gerenciador de e-mails do destinatário não consiga ler HTML, a mensagem sem HTML será exibida. Não é necessário configurar as duas, apenas uma delas já basta.

$mail->AltBody = $texto_sem_HTML;
$mail->MsgHTML($texto_com_HTML);

E, finamente, vamos solicitar o envio.

$mail->Send();

Porém, não vamos esquecer do nosso try/catch. Vamos fechar o try, e iniciar o catch.

} catch (phpmailerException $e) {
    echo $e;
} catch (Exception $e) {
    echo $e;
}

O primeiro catch trata a exceção phpmailerException. Essa exceção será chamada caso ocorra algum erro durante a execução da classe PHPMailer.

Já o segundo catch trata qualquer outra exceção que ocorra durante a execução do script.

E pronto! Agora você já sabe como enviar e-mail autenticado usando PHPMailer. Confira nosso código completo:

require_once('class.phpmailer.php');

$mail = new PHPMailer(true);
$mail->IsSMTP();

try {
    $mail->Host = "localhost";
    $mail->SMTPDebug = false;
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "tls";
    $mail->Port = 587;
    $mail->Username = "seuemail@dominio.com.br";
    $mail->Password = "suasenha";
    $mail->AddAddress("destinatario@dominio.com.br", "Destinatário");
    $mail->SetFrom("remetente@dominio.com.br", "Remetente");
    $mail->AddReplyTo("remetente@dominio.com.br", "Remetente");
    $mail->Subject = "Assunto do e-mail";
    $mail->AddAttachment($anexo["tmp_name"],$anexo["name"],"base64",$anexo["type"]);
    $mail->AltBody = $texto_sem_HTML;
    $mail->MsgHTML($texto_com_HTML);
    $mail->Send();
} catch (phpmailerException $e) {
    echo $e;
} catch (Exception $e) {
    echo $e;
}

Até a próxima, pessoal!

 

No comment yet, add your voice below!


Add a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *