- Rating:
- 5
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!