Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

segunda-feira, 19 de setembro de 2011

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 eclass.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
04require("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 <b>HTML</b>! <br /> <img src="http://blog.thiagobelem.net/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley"> ";
38$mail->AltBody = "Este é o corpo da mensagem de teste, em Texto Plano! \r\n <img src="http://blog.thiagobelem.net/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley"> ";
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
52if ($enviado) {
53echo "E-mail enviado com sucesso!";
54else {
55echo "Não foi possível enviar o e-mail.<br /><br />";
56echo "<b>Informações do erro:</b> <br />" $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.