Enviando email autenticado – PHP5

Email Autenticado com PHP5 – Classe PHPMailer

Olá, galera recentemente passei por um problemão com os sites de clientes, devido à troca de host que eu utilizava para hospedar os sites de meus clientes eu acabei me deparando com uma falha (minha) muito grande!

Eu utilizava um script para envio de email que não utilizava autenticação e após a troca de host para outro que apenas enviava email autenticado os clientes acabaram ficando 2 dias sem receber email e dei sorte em perceber pq o script retornava sucesso ao enviar. Então acabei tendo que mudar em todos os clientes, embora eu soubesse da importância de se enviar email utilizando a autenticação nunca tinha notado a necessidade. É de conhecimento que os email enviados sem autenticação podem ser reportados como SPAM, poxa pq eu não pensei nisso antes…. Mas valeu a necessidade que trouxe a experiência e agora compartilho com vocês! 😉

Utilizaremos a Classe PHPMailer – download (classe)

Algumas vantagens (existem dezenas):

* Você pode enviar email de sua aplicação local, isso mesmo, pode testar localmente, isso pq ele utilizará a autenticação no seu servidor smtp. Então se você não tem o servidor de email instalado na sua máquina poderá testar sem precisar subir os arquivos para o dominio!

* Envia Email em formato HTML ou TEXTO!

* Envia anexos de forma muito simples (imagens, zip, rar, etc…)

Que tal o velho e bom HTML ? 

<html>
<head>
<title>contato</title>
</head>
<body>
 <form name="contato" id="contato" action="contato.php" method="post">
 <input type="text" name="nome" id="nome">
 <input type="text" name="email" id="email">
 <textarea name="mensagem" id="mensagem"></textarea>
 <input type="submit" name="btn_enviar" id="btn_enviar" value="mandar bala">
</body>
</html>

OK? um formulário super-ultra-power-rangers de simples não? mas servirá bem!

Olha o PHP ai !!! Salve-o como contato.php

 
Isso é tudo! Basta adaptarem às suas necessidades (outros campos, ajax, get …)

<?
#inclui a classe PHPMAILER
include("phpmailer/class.phpmailer.php");
#instancia o objeto
$mail = new PHPMailer();
#enviar via SMTP
$mail->IsSMTP();
#seu servidor smtp / dominio no meu caso "mail" mas pode mudar verifique o seu!
$mail->Host = "smtp.SEUDOMINIO.com.br";
#habilita smtp autenticado
$mail->SMTPAuth = true;
#usuário deste servidor smtp. Aqui esta a solucao
$mail->Username = "[email protected]";
$mail->Password = "123456"; // senha
#email utilizado para o envio, pode ser o mesmo de username
$mail->From = "[email protected]";
$mail->FromName = "NOME DE EXIBICAO";

#Enderecos que devem receber a mensagem
$mail->AddAddress("[email protected]","Vendas");
$mail->AddAddress("[email protected]","Financeiro");
#wrap seta o tamanhdo do texto por linha
$mail->WordWrap = 50;
#anexando arquivos no email (supondo estar no mesmo diretorio)
$mail->AddAttachment("arquivo.zip");
$mail->AddAttachment("foto.jpg");
$mail->IsHTML(true); //enviar em HTML

#recebendo os dados do formulario
if(isset($_POST['nome'])){
 $nome = $_POST['nome'];
 $email = $_POST['email'];
 $mensagem = $_POST['mensagem'];
 #informando a quem devemos responder. o mail inserido no formulario
 $mail->AddReplyTo("$email","$nome");
 #criando o codigo html para enviar no email, voce pode utilizar qualquer tag html
 $msg = "Contato Site";
 $msg .= " Nome: $nomen";
 $msg .= " E-mail: $emailn";
 $msg .= " Mensagem: $mensagemn";
 }

$mail->Subject = "ASSUNTO DO EMAIL";
#adicionando o html no corpo do email
$mail->Body = $msg;
#enviando e retornando o status de envio
if(!$mail->Send())
{
echo "houve um erro ao enviar o email! erro: $mail->ErrorInfo";
#$mail->ErrorInfo informa onde ocorreu o erro, o uso opcional
exit;
}
echo "Mensagem enviada ok";
?>

Bem, acho que não tem tanto para explicar devido aos comentários no código, porém….

Como sempre (garoto bonzinho), estou à disposição para as eventuais dúvidas que surgirem.

Só uma dica, como eu não sei a senha dos emails dos clientes, claro, somente do cpanel, resolvi criar para todos uma conta de email (adicional) padrão para utilizar na autenticação do script.

Dúvido que você queira fazer o download de tudo já pronto, mas de toda forma está ai! 😉

download (exemplo)

Se sua versão do PHP for PHP 4, baixe o arquivo do link abaixo e substitua os do pacote padrão que disponibilizei por estes. Link    http://clareslab.com.br/learn/mail/php4.rar

seu email é yahoo?

entre no email, clique em opções, Acesso POP e Redirecionamento, marque a opção Web e Acesso POP e clique em salvar. como abaixo:

ATENÇÃO!!!
ESSE CÓDIGO FOI ESCRITO PARA SER UTILIZADO NA VERSAO QUE DISPONIBILIZEI AQUI DO PHPMAILER
ATENTEM-SE À ISSO, TALVEZ NUMA VERSÃO DIFERENTE HAJA OUTROS PARÂMETROS À SER CONFIGURADOS OU OMITIDOS.

NO PHP.INI DESCOMENTE A LINHA  EXTENSION=PHP_OPENSSL.DLL 

CONFIRME COM SEU HOST O ENDEREÇO DO SERVIDOR SMTP

FAÇA TESTES LOCAIS E ON-LINE

 

IMPORTANTE:
ALGUMAS PESSOAS NÃO ESTÃO CONSEGUINDO ENVIAR O EMAIL DEVIDO À UM ERRO NO  ENDEREÇO SMTP, NESTE CASO UTILIZE LOCALHOST NO LUGAR DO SMTP.DOMINIO.COM.BR. EX:

$mail->Host = “localhost” 

Obs:  No meu caso ocorria esse problema também.

 

Abraços,

Rafael Clares

Comments

  1. By cleison

  2. By Luiz

  3. By clares

  4. By rafael

  5. By Rafael

  6. By Rafael

  7. By Gilson

  8. By Ricardo Spinoza

  9. By andrey

  10. By andrey

  11. By Joao Paulo Villela

  12. By Joao Paulo Villela

  13. By Gustavo

  14. By Frank Barbosa

  15. By Frank Barbosa

  16. By Gustavo

  17. By Aline

  18. By Aline

  19. By Pedro

  20. By Jonatan

  21. By Cleiton

  22. By Renan

  23. By Diego

  24. By Romulo

  25. By Luiz Manuel Gomes

  26. By Luiz V.

  27. By Ricardo Augusto Nunes

  28. By Thiago

  29. By Juca

  30. By Dreyson

  31. By Dreyson

  32. By Dreyson

  33. By R4

  34. By Eduardo

      • By Eduardo

  35. By Eduardo

  36. By Luan Marcos Isidoro

  37. By Jaderson Trierweiler

  38. By Fábio

  39. By Emanuel

  40. By Otávio

  41. By Diogo

      • By Diogo

  42. By Diogo

  43. By Julio

  44. By Allex

  45. By Milene Fermo Manfredini

  46. By nil

  47. By nil

  48. By Vitor Hugo

  49. By Lucio

  50. By Osmar

      • By Osmar

  51. By Thiago Bettanzos

    • By Thiago Bettanzos

      • By Eduardo Scopel

  52. By eddpo

  53. By Willian

  54. By Daniel

  55. By Igusson

  56. By Ricardo

  57. By kiel

  58. By william

    • By Rafael Clares

  59. By Alvaro

  60. By paulo robson

  61. By Lauro Moraes

  62. By Diogo Leite Gomes

%d blogueiros gostam disto: