Enviar e-mails pelo PHP usando o PHPMailer

Você está tendo problemas para enviar e-mails pelo seu script PHP? Seus problemas acabaram!

Hoje vou ensinar como usar o PHPMailer para enviar os e-mails do seu site – via SMTP – com facilidade.

O PHPMailer é uma classe pronta para envio de e-mails através do PHP via conexão SMTP ou POP3 muito utilizado por todo o mundo. Seu método de envio é largamente recomendado e é bem melhor do que o envio do mail() que á função padrão do PHP.

Primeiro você precisa fazer o download da última versão dele, vá nesse endereço e baixe a sua versão ou vá direto ao site do script.

Nota: Nesse tutorial usarei a versão 2.3 (download) do PHPMailer que é a última versão até agora.

Faça o download, descompacte o arquivo e coloque os arquivos class.phpmailer.php e class.smtp.php em uma pasta chamada phpmailer dentro do seu site.

Agora, vamos ao script que faz o envio do e-mail:

01
< ?php
02

03
// Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
04
require(“phpmailer/class.phpmailer.php”);
05

06
// Inicia a classe PHPMailer
07
$mail = new PHPMailer();
08

09
// Define os dados do servidor e tipo de conexão
10
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
11
$mail->IsSMTP(); // Define que a mensagem será SMTP
12
$mail->Host = “smtp.dominio.net”; // Endereço do servidor SMTP
13
//$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
14
//$mail->Username = ‘seumail@dominio.net’; // Usuário do servidor SMTP
15
//$mail->Password = ‘senha’; // Senha do servidor SMTP
16

17
// Define o remetente
18
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
19
$mail->From = “seumail@dominio.net”; // Seu e-mail
20
$mail->FromName = “Joãozinho”; // Seu nome
21

22
// Define os destinatário(s)
23
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24
$mail->AddAddress(‘fulano@dominio.com.br’, ‘Fulano da Silva’);
25
$mail->AddAddress(‘ciclano@site.net’);
26
//$mail->AddCC(‘ciclano@site.net’, ‘Ciclano’); // Copia
27
//$mail->AddBCC(‘fulano@dominio.com.br’, ‘Fulano da Silva’); // Cópia Oculta
28

29
// Define os dados técnicos da Mensagem
30
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
31
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
32
//$mail->CharSet = ‘iso-8859-1’; // Charset da mensagem (opcional)
33

34
// Define a mensagem (Texto e Assunto)
35
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
36
$mail->Subject = “Mensagem Teste”; // Assunto da mensagem
37
$mail->Body = “Este é o corpo da mensagem de teste, em HTML!
:) “;
38
$mail->AltBody = “Este é o corpo da mensagem de teste, em Texto Plano! \r\n :) “;
39

40
// Define os anexos (opcional)
41
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
42
//$mail->AddAttachment(“c:/temp/documento.pdf”, “novo_nome.pdf”); // Insere um anexo
43

44
// Envia o e-mail
45
$enviado = $mail->Send();
46

47
// Limpa os destinatários e os anexos
48
$mail->ClearAllRecipients();
49
$mail->ClearAttachments();
50

51
// Exibe uma mensagem de resultado
52
if ($enviado) {
53
echo “E-mail enviado com sucesso!”;
54
} else {
55
echo “Não foi possível enviar o e-mail.

“;
56
echo “Informações do erro:
” . $mail->ErrorInfo;
57
}
58

59
?>
Algumas linhas de código estão comentadas porque são opcionais e dependem também da necessidade de quem vai usar o script. Logo no começo, na parte dos dados do servidor você tem a opção de configurar o login do servidor SMTP caso seja necessário.

Repare que, na parte na qual definimos a mensagem e o assunto do e-mail, temos duas formas de “corpo de e-mail”: formato HTML e formato Texto Plano… É bom que você também defina o texto plano (que nada mais é do que um texto sem as tags HTML parecido com o conteúdo de um arquivo .txt) por que muitos leitores de e-mail não têm suporte a e-mails em HTML (seja por configuração do usuário ou por falta de funcionalidade mesmo).

Deixei também um exemplo pronto de como anexar um arquivo ao seu e-mail. O caminho do arquivo (primeiro arquivo) está nos moldes de um servidor rodando localmente… Mas ele pode ser relativo se você estiver usando o script num servidor externo. O segundo argumento é o ‘novo’ nome do arquivo, mas é opcional.

Bom… Espero que tenham entendido o script e consigam usá-lo. Qualquer dúvida é só falar!

Deixe um comentário