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 = "seuEmail@SEUDOMINIO.com.br";
$mail->Password = "123456"; // senha
#email utilizado para o envio, pode ser o mesmo de username
$mail->From = "eMail@SEUDOMINIO.com.br";
$mail->FromName = "NOME DE EXIBICAO";

#Enderecos que devem receber a mensagem
$mail->AddAddress("seuEmail@SEUDOMINIO.com.br","Vendas");
$mail->AddAddress("outroEmail@SEUDOMINIO.com.br","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. Responder

  2. Responder

  3. By Luiz

    Responder

  4. By clares

    Responder

  5. By rafael

    Responder

  6. Responder

  7. By Rafael

    Responder

  8. Responder

  9. By Rafael

    Responder

  10. By Gilson

    Responder

  11. By Ricardo Spinoza

    Responder

  12. By andrey

    Responder

  13. Responder

  14. By andrey

    Responder

  15. Responder

  16. Responder

  17. Responder

  18. Responder

  19. Responder

  20. By Joao Paulo Villela

    Responder

  21. Responder

  22. By Joao Paulo Villela

    Responder

  23. Responder

  24. Responder

  25. Responder

  26. Responder

  27. By Frank Barbosa

    Responder

  28. Responder

  29. By Frank Barbosa

    Responder

  30. Responder

  31. Responder

  32. Responder

  33. By Aline

    Responder

  34. By Aline

    Responder

  35. By Pedro

    Responder

  36. Responder

  37. Responder

  38. Responder

  39. By Jonatan

    Responder

  40. Responder

  41. Responder

  42. Responder

  43. Responder

  44. Responder

  45. Responder

  46. Responder

  47. Responder

  48. Responder

  49. By Renan

    Responder

  50. Responder

  51. By Diego

    Responder

  52. By Romulo

    Responder

  53. Responder

    • Responder

  54. By Luiz Manuel Gomes

    Responder

  55. Responder

    • Responder

  56. By Ricardo Augusto Nunes

    Responder

  57. By Thiago

    Responder

  58. By Juca

    Responder

  59. By Dreyson

    Responder

    • Responder

  60. By Dreyson

    Responder

  61. By Dreyson

    Responder

    • Responder

  62. Responder

    • Responder

      • Responder

        • Responder

        • Responder

  63. By R4

    Responder

    • Responder

  64. Responder

  65. Responder

    • Responder

      • Responder

  66. Responder

  67. By Luan Marcos Isidoro

    Responder

  68. By Jaderson Trierweiler

    Responder

  69. By Fábio

    Responder

  70. By Emanuel

    Responder

    • Responder

  71. Responder

  72. By Diogo

    Responder

    • Responder

      • By Diogo

        Responder

        • Responder

  73. By Diogo

    Responder

  74. Responder

  75. By Julio

    Responder

  76. By Allex

    Responder

  77. By Milene Fermo Manfredini

    Responder

    • Responder

  78. By nil

    Responder

  79. By nil

    Responder

    • Responder

  80. Responder

  81. Responder

  82. By Vitor Hugo

    Responder

  83. By Lucio

    Responder

  84. By Osmar

    Responder

    • Responder

      • By Osmar

        Responder

  85. Responder

    • Responder

  86. By Thiago Bettanzos

    Responder

    • By Thiago Bettanzos

      Responder

    • Responder

      • By Eduardo Scopel

        Responder

  87. By eddpo

    Responder

  88. By Willian

    Responder

  89. By Daniel

    Responder

    • Responder

  90. By Igusson

    Responder

    • Responder

  91. By Ricardo

    Responder

    • Responder

  92. Responder

    • Responder

  93. By kiel

    Responder

  94. Responder

    • By Rafael Clares

      Responder

  95. Responder

  96. By Alvaro

    Responder

    • Responder

      • Responder

        • Responder

  97. By paulo robson

    Responder

  98. Responder

    • Responder

  99. Responder

    • Responder

  100. Responder

  101. By Lauro Moraes

    Responder

  102. Responder

  103. By Diogo Leite Gomes

    Responder

Perguntas duplicadas ou cujo a resposta esteja nos comentários serão ignoradas.
Comentários com códigos serão ignorados(para isso, use o pastebin.com e informe aqui o link).
Faça sua pergunta e "aguarde" ser aprovada para aparecer no blog.
Aguarde sua resposta, ela não é em tempo real, tenha paciência!

Deixe seu comentário