Enviando email autenticado – PHP5

  • Autor do post:
  • Categoria do post:PHP DEV

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

Este post tem 142 comentários

  1. Rafael Soares

    Cara, adorei seu POST. Não tinha me tocado da importância de enviar um email autenticado, já que tenho problema com o recebimento dos emails por parte dos meus clientes, que muitos recebem como SPAM, devido à não-inteligência artificial dos servidores de email como Yahoo! Parabéns pelo POST cara! Um abraço!

  2. cleison

    salvou minha vida

  3. Luiz

    Comigo está ocorrendo o seguinte erro: Language string failed to load: connect_host

    O que pode ser?

  4. clares

    Olá Luiz, existe algum dado incorreto, podem ser:
    – email e senha
    – servidor smtp – mais provável, verifique a linha $mail->Host e certifique-se de que o servidor está correto, o seu pode ser smtp.dominio.com! De toda forma, algum dado que você informou está incorreto.
    Abraços

  5. rafael

    Bom dia!!

    Você sabe como incluir no cabeçalho a informação Message-ID:

    desde já, agradeço.

  6. Rafael

    Estou usando o smtp do yahoo!
    Erro:
    houve um erro ao enviar o email!
    Language string failed to load: from_failedrafaeldorazio

    rafaeldorazio é o meu email e lembrando que no yahoo nao se deve colocar @yahoo.com.br no usuario!

  7. Rafael Clares

    Ola, verifique essas linhas abaixo e veja se o seu está igual.

    $mail->SMTPAuth = true; // ‘true’ para autenticação
    $mail->Mailer = “smtp”; //Usando protocolo SMTP
    $mail->Host = “smtp.mail.yahoo.com.br”; //seu servidor SMTP
    $mail->Username = “seuusuarionoyahoo sem aroba”;
    $mail->Password = “senhadoyahoo”; // senha de SMTP
    $mail->From = “[email protected]”;

    Verifique também nas configurações do yahoo se seu e-mail está permitindo acesso pop3 e smtp.

    abraços,

  8. Rafael

    Essa linha não tem aqui no codigo!
    $mail->Mailer = “smtp”; //Usando protocolo SMTP
    Funcionou, enviou o email corretamente! Porem para aqueles que usam o yahoo ai vai algumas dicas:
    1- Entre com seu usário e senha, depois la em cima do lado direito clique em Opções.
    Agora abriu uma nova tela, vai no link Acesso POP e Redirecionamento que se localiza no lado direito.
    Habilite Web e Acesso POP, para mais informações de como configurar a classe clique no link Configurações POP.

    Este processo é de extrema importancia!
    Rafael Clares, muito obrigado, dessa eu nao sabia que precisava liberar o serviço pop3 e smtp. Grato pela ajuda e pela função 🙂

  9. Gilson

    Tive um problemão semelhante ao teu quando troquei de host, infelizmente fiquei sabendo dias depois da troca. Valeu pelo se Post isso vai resolver meu problema.

  10. Ricardo Spinoza

    Muito bom o seu código, estou enfrentando o mesmo problema para enviar msg pelo yahoo, mas acredito que no meu caso seja o proxy barrando minhas mensagens. Parabéns pelo artigo.

  11. andrey

    BOa noite! Fiz o download do arquivo, troquei o srvidor smtp, os emails tudo como pedia… coloquei para onde deve ser enviado, eno entanto dá qd clico em enviar aparece numa outra página todo o código do arquivo ‘contato.php’. você pode me ajudar a solucionar esse problema? preciso urgente desse código para um site que estou fzendo, o mais próximo que cheguei foi o seu! muito obrigado, andrey!!
    aguardo!

  12. Rafael Clares

    Ow Andrey, beleza ai?
    Faça o seguinte, onde esta “<?” troque para “<?php”
    depois me fale.
    abraços,

  13. andrey

    botei agora num site q eu tenho, online tb nao deu certo :/

  14. Rafael Clares

    Andrey, me envie o arquivo em [email protected] e me passe o url desse seu site e te digo o que você está fazendo errado. Até logo

  15. Marcos Paulo

    cara.. muito bom esse seu tuto… só que to meio desatualizado.. sou da época em que a função mail() do php era suficiente… agora to mô perdido com essa atualização SMTP… se vc pude me ajudar a entender um pouco, pq não consegui configurar esse código pra funcionar comigo.. vlws!

  16. Rafael Clares

    Olá Marcos, na verdade a função mail() é suficiente, o problema é que a cada dia que se passa os hosts estão deixando de utilizar o envio de email sem autenticação devido ao grande número de spam, uma vez que se pode informar qualquer email para envio através da função mail.
    se tem alguma dúvida. por favor post aqui o código para analisarmos juntos ok. Ficará bem mais fácil. Abraços

  17. Diego Ramos

    Olá Rafael, configurei aqui os arquivos e está retornando o seguinte erro :

    houve um erro ao enviar o email!
    “smtp”Language string failed to load: mailer_not_supported

    O que poderia ser?
    Grato pela atenção! d;D

  18. Rafael Clares

    Olá Diego, pode colocar aqui o código da linha
    $mail->Host
    até a
    $mail->FromName ?
    Daí fica mais fácil, beleza…
    abraços,

  19. Joao Paulo Villela

    Gostaria de saber o seguinte como e que eu faça para a html que eu fiz e com o stylo que eu coloquei, pois coloquei ele, o html esta indo mais o stylo nao esta indo.
    Obs.: o stylo esta dentro de meu html.

  20. Rafael Clares

    Ola Joao Paulo, voce pode fazer o seguinte para imagens e estilos:
    – hospede no seu host o estilo e as imagens
    no HTML coloque a url completa ex.
    <link type=”text/css” href=”http://meusite.com/css/estilo.css”>
    e a mesma coisa para images
    <img src=”http://meusite.com/images/topo.jpg”>

    abracos

  21. Joao Paulo Villela

    Amigo coloquei mas não esta dando certo, e sim enviando para o SPAM e quando eu tiro ele envia para a Caixa de Entrada mesmo…
    o que mais eu tenho que mudar.
    No restante esta tudo blz…

  22. Francisco apterix

    Colega, excelente dica! Agradeço muito pelo seu tempo dedicado a este artigo. Parabéns!

  23. Gustavo

    Olá Rafael, eu to com o mesmo problema do pessoal ai. tah dando um erro:

    houve um erro ao enviar o email!

    Language string failed to load: connect_host

    gostaria de saber se soh é preciso mexer no arquivo contato.php?

    como vc pode ver meu servidor de email é da yahoo..e quero mandar as informações do formulario pra esse email. já habilitei o pop e smtp no yahoo e nada ainda.

    ajuda ai e me diz no q estou errando..abraçoss!!

  24. Rafael Clares

    Galera, é o seguinte… o grande problema é que ninguém retorna depois que passo uma possível solução…. não há nada errado no código e nem está faltando alterar mais nada…

    Marquem a opção “web e acesso pop”.. façam exatamente assim:

    1) Entre no email
    2) Clique em opções
    3) Clique em “Acesso POP e Redirecionamento”
    4) Marque a opção “Web e Acesso POP”
    5) Clique em salvar…

    Pronto acabou o seu choro…

    Testem com o email que criei.

    usuario: [email protected]
    senha : 123denovo

    obs: Por favor, se alguém obtiver sucesso nos dê um retorno aqui nos comentários… pq eu já estou quase passando por mentiroso. Só o meu email do yahoo é ultra-power-master-dev-active para funcionar? ;(

    Obrigado

  25. Frank Barbosa

    Meu caro, não consigo usar smtp externo, tipo o gmail… tem alguma correção pra isso?

  26. Frank Barbosa

    Opa, amigo…
    Obrigado pela atenção…
    O erro agora, é assim:
    SMTP Error: Could not connect to SMTP host.

    já liberei a porta de saída 465 no Firewall do servidor.
    como eu uso o pacote da linguagem de erro, no português?

  27. Rafael Clares

    Frank, abra seu arquivo php.ini e descomente a linha extension=php_openssl.dll (retirando o “;”)

    Abraços

  28. Gustavo

    Olá Rafael,seu tuto está dando certo comigo..tah perfeito, meu problema agora eh outro. O meu servidor de testes gratuitos é o awardspace, ele naum disponibiliza o envio de email SMTP usando PHP..o q faço agora?? tem alguma solução q naum precise trocar de servidor?? pois naum kero sair do awardspace por enquanto.

  29. Rafael Clares

    Gustavo, não entendi muito bem.
    Se eles não aceitam o email autenticado, pq
    você quer enviar utilizando esse método.
    Talves seja o caso de você enviar sem autenticação. Veja em http://br.php.net/mail.
    abraços

  30. Aline

    Olá!
    Testei o script e funcionou corretamente c o SMTP do Yahoo (tenho conta).
    Porém, não estou conseguindo enviar anexo quando ele vem por um formulário.

    Você poderia me ajudar mostrando como receber o anexo por uma variável e onde informar o anexo?

    Tentei o seguinte:
    – No inicio do arquivo contato.php:
    include(“phpmailer/class.phpmailer.php”);
    //pega nome do arquivo
    $anexo_name = $_FILES[“Anexo”][‘name’];

    – Mais abaixo, na configuração do destinatário:
    //Enderecos que devem ser enviadas as mensagens
    $mail->AddAddress(“MEUEMAIL”,”Aline”);
    //wrap seta o tamanhdo do texto por linha
    $mail->WordWrap = 50;
    //anexando arquivos no email
    $mail->AddAttachment(“$anexo_name”); //aqui o nome da variável que recebe o nome do arquivo
    $mail->IsHTML(true); //enviar em HTML

    Lembrando que no lugar do email de destino coloquei o endereço correto. Aqui troquei por MEUEMAIL só pra exemplificar.

    Só consigo mandar o anexo se ele estiver na mesma pasta do script, e colocar o nome dele ali na mao, tipo “arquivo.jpg”.

    Será que preciso receber os outros parâmetros pelo método “FILE”?
    Mas como organizaria?

    Desde já agradeço!!!!!!!

    Aline

  31. Aline

    Opa! Consegui resolver! rss

    É só receber o arquivo usando “FILE[]”, mover para uma pasta, e depois informar o nome da imagem com o caminho correto em “$mail->AddAttachment(”pasta/nome_arquivo”)”

    Deu certo! ;D

  32. Pedro

    Olha meu erro e o seguinte estava dando erro com a porta no smtp do gmail dai eu troquei para a porte 587 parou de dar erro na porta e aparece o seguinte erro:

    houve um erro ao enviar o email! erro: Language string failed to load: from_failed [email protected]

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = “smtp.gmail.com”;
    $mail->SMTPAuth = true;
    $mail->Mailer = “smtp”;
    $mail->Username = “********”;
    $mail->Password = “*******”;
    $mail->From = “[email protected]”;
    $mail->FromName = “Acharei”;

    O que Pode estar dando errado ?

  33. Rafael Clares

    Caro Pedro, este problema já foi resolvido e a solução está nos comentários. grato

  34. Phillipe

    Caro Rafael, tenho tentado usar a classe phpmailer para gmail, yahoo entre outros, mas com quaisquer configurações me retorna o erro SMTP Error: Could not connect to SMTP host, bom troquei o server a pouco tempo tinha um linux e agora uso um windows dedicado.Não sei se interfere em alguma coisa para smtp, crio que não. obrigado tudo de bom

  35. Rafael Clares

    Olá Phillipe, essa dificuldade já foi tratada nesse mesmo post, vc leu os demais comentários?
    abra seu arquivo php.ini e descomente a linha
    extension=php_openssl.dll

    abraços

  36. Jonatan

    Parabéns pelo Post salvou minha pele hehe…

  37. Eugênio

    Ola Rafael! Achei mt bom seu post e tentei utiliza-lo. Está havendo uma falha… Poderia dar uma olhadinha em http://www.centermusictaquara.com.br/manutencao2.php e envie o formulario…. Ta dando o seguinte erro:
    Warning: fsockopen() [function.fsockopen]: unable to connect to mail.centermusictaquara.com.br:25 (Connection refused) in /home/centermu/public_html/class.smtp.php on line 105

    houve um erro ao enviar o email! erro: Language string failed to load: connect_host

    Como resolvo isso? Vlw, abraço e sucesso!

  38. Eugênio

    Opa Rafael! Primeiro parabens pelo post, ficou bom. Apesar disso estou tendo dificuldades. A mesagem q dá ao executar o script eh essa:

    Warning: fsockopen() [function.fsockopen]: unable to connect to mail.centermusictaquara.com.br:25 (Connection refused) in /home/centermu/public_html/phpmailer/class.smtp.php on line 105
    houve um erro ao enviar o email! erro: Language string failed to load: connect_host

    Onde é esse erro? Brigadão!

  39. Rafael Clares

    Eugênio, obrigado pelo comentário.
    Qual versão do PHPMailer está usando? Baixe a última versão. Outro ponto seria você verificar se o servidor está sob firewall ou proxy.
    Esse erro também ocorre muito quando utilizado o PHP4, qual você está usando?

  40. Phillipe

    Boa tarde.
    Rafael, fiz sim a alteração no php.ini/extension=php_openssl.dll, e esse problema infelizmente não foi solucionado. 🙁
    Estou tentando de tudo, mas acho que tem alguma para configurar no server, pois faço o administração de remotamente.
    Mesmo assim obrigado, caso tenha alguma dica 😀 pls estou realmente precisando.

  41. Rafael Clares

    Philipe, confirme se as portas que esta utilizando no PHPMailer sao as mesmas do seu servidor smtp. Outra coisa, verifique se não está sob um proxy. Abraços

  42. Rafael Clares

    O ruim é que a galera obtem sucesso na implementaçao do código não comenta, apenas colocam as dúvidas e somem omitindo a ajuda ao colegas. Essa é a parte chata de se postar.
    Eu utilizo esse código em mais de 15 sites e todos funcionam, espero que o pessoal se conscientize quanto ao dar um retorno nos comentários para nos ajudar.

  43. Cleiton

    Se eu enviar e-mails dessa forma não existe aquela limitação de 300 por hora como os servidores tem?

  44. Rafael Clares

    Olá Cleiton, não sei se tem limitação, de toda forma, a intenção aqui não é criar um servidor de SPAM. Obrigado pelo comentário.

  45. Fellipe Borges

    Olá Rafael!

    Só passando para agradecer o artigo. Excelente e vai me ajudar demais.

    Grande abraço, Deus abençoe sua vida.

  46. Renan

    Perfeito!

    Parabéns cara.

    (para os que não conseguiram, acho que basta prestar mais atenção na hora do setup, porque o code está perfeito).

  47. Rafael Clares

    Renan, obrigado pelo comentário eu também utilizo esse código em mais de 10 contas distintas e funciona bem rs.

  48. Diego

    Eae Rafa!!!

    Parabén pelo artigo!!!

    Abraços do amigo!!

  49. Romulo

    Simples, objetivo e muito bem explicado!

    Perfeito, parabéns Rafael 😀

  50. Juno Rodrigues

    Perfeito!
    Muito bom mesmo! meus parabéns, esta foi a melhor solução que encontrei para meus problemas de envio de mail… obrigado!

    Mas ainda estou em um empasse, não entendi muito bem como funciona para mandar anexo… seria possivel explicar mais detalhadamente como isso funciona??

    Abraço

    1. Rafael Clares

      Ola Juno, você pode enviar arquivos em anexo mas no exemplo o arquivo já está definido, ou seja, no fonte do programa esta apenas mostrando o comando para envio de anexos e passando o nome do arquivo que será enviado, no caso de criar um formulário que permita o usuário enviar anexos você terá que criar o upload no formulário e já muda um pouco de figura pq você terá que tratar os arquivos enviados, ou seja, fazer verificações em relação a extensão e tamanho desses arquivos pq um usuário mal intencionado poderia enviar virus ou arquivos grandes que comprometesse seu servidor, de fato, esse é um outro assunto. A nao ser que você esteja enviando um arquivo pre-definido como logotipo no cabeçalho do email, arquivos de texto como manuais, enfim, algo que você sempre envia ou recebe através do seu formulário de email. Em outra oportunidade mostrarei como criar um formulário de email permitindo(e tratando) envio de anexos. Obrigado pelo comentário, abraços.

  51. Luiz Manuel Gomes

    Prezado Rafael,

    Estou passando por problemas semelhantes aos que voce já passou, porém não estou conseguindo resolver com o pessoal da locasite, será que voce poderia me ajudar.

    se possivel, me mande um email que te passo meu telefone.

    Muitisso Obrigado

    Luiz Manuel O Gomes

  52. Luiz V.

    Medei de host e este nescessita enviar e-mails autenticados. Dai meu site não envia e-mai nenhum, na area admin tem as opções de envio por mail () função e por sendmail. Testei seu iscript e enviou corretamente porem como vou mesclar o seu iscript no meu site tendo vista que ele é muito avançado e deve ter muitos formulários separados, vou ter que encontrar e editar um por um? Isso é quaze impossível. Não tem como autenticar o envio no site todo criando um arquivo ou um sistema que chame este código? S tem a opção de usar mail()função do PHP e sendmail deve ter uma forma de resolver isso. Se alguém souber resolver entre em contato comigo no email [email protected] por favor. Meu site é um site pronto e não tenho nem idéia de como fazer funcionar o envio autenticado.

    1. Rafael Clares

      É Luiz, você terá mesmo trabalho…como eu também tive e tentei dar-lhes uma direção nesse Post, você terá que trocar a função mai() por phpMailer em todos os formulários…A quantidade de trabalho irá depender do destino dos email, ou seja, se os emails são enviados do site para você (ex. contato) dai pode ser mais facil pq você não precisará formatar o conteúdo enviado podendo substituir as variáveis que recebem o POST por um foreach($_POST) assim você recupera todos os campos enviados do formulário e os envia. Mas se os emails são destinados aos usuários, então amigo, boa sorte na sua jornada. Caso tenha alguma dúvida coloque nos comentários e na medida do possível responderei. Abraços

  53. Ricardo Augusto Nunes

    Cara perfeito o script, parabens!

  54. Thiago

    Agradeço muito pela dica, salvou não só meu dia mais o meu ano, pq sempre usava um q tinha aqui sem autenticação e sempre funcionava, mais corrigiram um erro do meu servidor ai parou de enviar.
    Bom agora eh só eu mudar de todos os clientes q ta resolvido

    Valeu mesmo!!!
    Abraços

  55. Juca

    Muito bom meu caro!
    Valeu!!

  56. Dreyson

    não esta chegando acentuações no meu e-mail cara.
    você pode me ajuda.

    código PHP

    contato

    IsSMTP();
    // Seu servidor smtp
    $mail->Host = “mail.recifetecnologia.com.br”;
    // habilita smtp autenticado
    $mail->SMTPAuth = true;
    // usuário deste servidor smtp
    $mail->Username = “[email protected]”;
    $mail->Password = “xxxx”; // senha
    //email utilizado para o envio
    //pode ser o mesmo de username
    $mail->From = “[email protected]”;
    $mail->FromName = “FORMULÁRIO DE CONTATO DO SITE”;

    //Enderecos que devem ser enviadas as mensagens
    $mail->AddAddress(“[email protected]”,”DREYSON SANTIAGO”);

    //wrap seta o tamanhdo do texto por linha
    $mail->WordWrap = 50;
    //anexando arquivos no email
    $mail->AddAttachment(“anexo/arquivo.zip”);
    $mail->AddAttachment(“imagem/foto.jpg”);
    $mail->IsHTML(true); //enviar em HTML

    header(“Content-Type: text/html; charset=ISO-8859-1”, true);
    // recebendo os dados od formulario
    if(isset($_POST[‘nome’]) && isset($_POST[‘email’]) && isset($_POST[‘tel’]) && isset($_POST[‘mensagem’])){
    $nome = ucwords($_POST[‘nome’]);
    $email = $_POST[‘email’];
    $tel = $_POST[‘tel’];
    $mensagem = $_POST[‘mensagem’];
    // informando a quem devemos responder
    //ou seja para o mail inserido no formulario
    $mail->AddReplyTo(“$email”,”$nome”);
    //criando o codigo html para enviar no email
    //voce pode utilizar qualquer tag html ok
    $msg = “”;
    $msg .= “ Nome: $nomen”;
    $msg .= “ E-mail: $emailn”;
    $msg .= “ TEL: $teln”;
    $msg .= “ Mensagem: $mensagemn”;
    }

    $mail->Subject = “CONTATO DO SITE”;
    //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! “.$mail->ErrorInfo;
    //$mail->ErrorInfo informa onde ocorreu o erro
    exit;
    }
    ?>

    1. Rafael Clares

      Dreyson, o ideal seria você me dizer como está chegando!
      Está chegando todas as letras porém sem acentos?
      Está faltando letras ? Caracters estranhos ?

      Tente algum desses:
      $mensagem = htmlentities($mensagem);
      ou
      $mensagem = utf8_decode($mensagem);

      Daí você me diz o que ocorre.
      Abraços

  57. Dreyson

    Rafael o erro é esse. Toda vez que eu coloco as acentuações chega em meu e-mail assim.

    texto da página de contato
    éãêç

    quando chega ao e-mail
    éãêç

    andei dando uma pesquisada em muitos sites e em alguns diz o seguinte. Que eu tenho que ver o código do PHP – header(“Content-Type: text/html; charset=ISO-8859-1”, true);

    e olhar o código do HTML, que são as <meta
    no meu código esta assim.

    para ver se estão iguais, mas estão sim.

    Forte abraço cara!!!!

  58. Dreyson

    Desculpe tá postando várias perguntas, mas estão acontecendo. Quando envio o e-mail na página de contato demora que só, de vez enquando ele envia tem outras vezes que não envia. o erro é o seguinte Language string failed to load: data_not_accepted mostra esse erro você sabe como posso tá resolvendo?

    obrigado pela atenção.

    $PHPMAILER_LANG[“data_not_accepted”] = ‘Erro de SMTP: Dados não aceitos.’;

    1. Rafael Clares

      Dreyson, já baixou a última versão do PHPMailer?
      Nunca vi esse erro, dê uma olhada nos docs do phpmailer, me mande os arquivos (compactados).
      [email protected] (o email é para mandar os arquivos ou trocar idéias, para dúvidas post no blog, assim ajudamos outras pessoas com mesmo problema)

      abraços,

  59. Bruno Barros

    Rafael, eu utilizo este mesmo script, só que agora na Locaweb os cara colocaram uma regra que eu tenho que autenticar, guardar isso na session e enviar depois de 17 segundos. Como guardo esta informação da autenticação da session?
    Obrigado!

    1. Rafael Clares

      Bruno, na verdade você não precisa guardar a informação na session e sim autenticar mantendo uma sessão.
      Basta iniciar o script com …
      session_start();
      autenticacao
      envia email
      so enviar email novamente se a sessao tiver mais de 17 segundos.

      Crie um novo arquivo php e teste o seguinte bloco de comandos.

      O metodo sleep(seconds) aguarda a quantidade de segundos passados no paramentro antes se executar a proxima linha de comando.

      Se precisar armazenar o inicio do script em uma session faça – $_SESSION[‘inicio’] = date(‘s’);
      abs

      1. Bruno Barros

        Poxa Rafael tentei o que você falou.
        Iniciei a session, coloquei sleep(20) depois da parte de autenticação e logo antes dométodo que envia (->send()), mas nada. Isso em script de teste enviando apenas um email!

        1. Rafael Clares

          Pow cara, acho que tem coisa errada no seu script, você está utilizando com autenticação como no exemplo do PHPMailler?
          Qualquer coisa, cria uma conta de email de teste, me mande os dados da conta e o script compactado para [email protected] para eu ver se consigo te ajudar…flw

        2. Rafael Clares

          Brunao, já viu se a extensão extension=php_openssl.dll esta descomentada no php.ini ?
          Verifique a linha
          extension=php_openssl.dll se estiver ;extension=php_openssl.dll descomete-a tirando o ; (ponto e virgula) da frente da linha.

          até logo,

  60. R4

    Rafael,
    O envio de mensagem está funcionando perfeitamente, inclusive do meu localhost. Porém se anexo arquivos $mail->AddAttachment() dá a seguinte mensagem, no arquivo class.phpmailer.php:

    Deprecated: Function set_magic_quotes_runtime() is deprecated in E:EasyPHP5.3.0wwwmailphpmailerclass.phpmailer.php on line 1091
    Deprecated: Function set_magic_quotes_runtime() is deprecated in E:EasyPHP5.3.0wwwmailphpmailerclass.phpmailer.php on line 1095

    Você teve algum problema semelhante?

    1. Rafael Clares

      Olá r4webb, não aconteceu esse erro comigo, já tentou passar o endereço absoluto do arquivo?
      Ex:
      $file = “E:\dirarquivo.zip”;
      $mail->AddAttachment($file);

  61. Milton Salles

    Rafael, muito bom; eu agradeço pela ajuda, tanto por email, quando por seus arquivos e ensinamentos;
    funcionou certinho;

    só precisei alterar o meu smtp de mail.miltonsalles.com para localhost (MESMO PUBLICADO) que funcionou….

    Muito obrigado…

  62. Eduardo

    Fiz as configurações q estão descritas, tentei com smtp do yahoo,do localhost, ophp.ini tá certinho, com o php_openssl.dll liberado… mas olha o erro:

    Warning: Failed opening ‘class.smtp.php’ for inclusion (include_path=”) in c:apachehtdocsteste_emailphpmailerclass.phpmailer.php on line 460

    Fatal error: Cannot instantiate non-existent class: smtp in c:apachehtdocsteste_emailphpmailerclass.phpmailer.php on line 527

    Alguém pode me ajudar? Desde já agradeço e parabéns Rafael pela disposição!!

    1. Rafael Clares

      Eduardo, o problema é que o programa não está encontrando o arquivo class.smtp.php no caminho informado.
      Verifique no diretório PHPMailer se o arquivo class.smtp.php existe. O mesmo está no pacote do download.
      Outra coisa, verifique e me diga qual a versão do PHP que está utilizando.
      Qualquer coisa me diga ok…

      abs

      1. Eduardo

        Opa.. rss, postei duas mensagens.. desconsidere a outra rss.
        Bem, estou com os arquivos nomsmo diretório sim, do jeito q baixei.
        A versão do meu php é 4.1.1

        Abraços

  63. Eduardo

    Olá!
    Fiz conforme as orientações, mas dá o seguinte erro:

    Warning: Failed opening ‘class.smtp.php’ for inclusion (include_path=”) in c:apachehtdocsteste_emailphpmailerclass.phpmailer.php on line 460

    Fatal error: Cannot instantiate non-existent class: smtp in c:apachehtdocsteste_emailphpmailerclass.phpmailer.php on line 527

    Alguém pode me ajudar?
    Abraços!

  64. Luan Marcos Isidoro

    Cara adorei esse script muito bom. Vlw msm ! Faz uma semana que eu to procurando isso vlw !

  65. Jaderson Trierweiler

    Valeu pelo post
    Serviu como consulta para mim

  66. Fábio

    Boa Solução parabens, funcionou mesmo bem 😉

    Cumps

  67. Emanuel

    Amigo estou usando o phpmailer em um sistema de newsletter que criei os email chegao ao destino só que no gmail não chega os dados do post so vai o html que criei

    1. Rafael Clares

      Emanuel, estranho chegar o html e não os dados do POST, será que você não criou nenhuma condição onde não está pegando o POST ?
      Me mostra ai o trecho do código.
      abraços

  68. Otávio

    Valew Brother Post Perfeito

  69. Diogo

    Rafael, coloquei meu email e a senha dele no script, mas está chegando no lixo eletrônico..tem ideia pq?

    Abs

    1. Rafael Clares

      Diogo, testou mais de um email ?

      1. Diogo

        testei sim, mais de um email e em dois servidores =//

        1. Rafael Clares

          Cara teu IP deve estar em black-list. Testei aqui tranquilo. Dê uma conferida com seu host, verifique o SPAM ASSASSIN, etc… abs

  70. Diogo

    Funcionou aqui Rafael.
    Valeu a atenção!

  71. Julio

    Muito obrigado pelo código! Funcionou perfeitamente!

  72. Allex

    Valeu Rafael.

    Funcionou perfeito.

    Abraços!!!

  73. Milene Fermo Manfredini

    Rafael, boa noite,
    Desculpa novamente perguntar algo que parece ter sido resolvido, porém preciso muito da sua ajuda.

    Houve um erro ao enviar o email!
    Language string failed to load: [email protected]

    $mail->Host = “smtp.mail.hotmail.com”;
    // habilita smtp autenticado
    $mail->SMTPAuth = true;
    // usuário deste servidor smtp
    $mail->Mailer = “smtp”;
    //Usando protocolo SMTP
    $mail->Username = “milenefm”; // Aqui seria sem o @? Utilizo o Hotmail.
    // e-mail sem o arroba
    $mail->Password = “*********************”;
    // senha

    //email utilizado para o envio
    //pode ser o mesmo de username
    $mail->From = “[email protected]”;

    Muito Obrigada,
    Abraços,
    Milene

    1. Rafael Clares

      Milene, você já configurou a conta do hotmail para aceitar a utilização SMTP ?
      Veja nas configurações do hotmail, no geral é preciso dar permissão para essa utilização, além disso você precisa saber a porta que é utilizada, a porta do hotmail não é a padrão.
      Após a linha:
      $mail->Host = “smtp.mail.hotmail.com”;
      Adicione:
      $mail->Port = numeroDaPortaSMTPdoHotmail;

      até logo

  74. nil

    por favor me ajude altentica esta para mim so recebo email se o email que a pessoa colocar no site for da uol de outros nao chega valeussss

    1. Rafael Clares

      Nil, tem que seguir o tutorial!

  75. nil

    rafael nao deu certo nao meu form com esse php ai tu nao consegue altenticar o meu php ?
    vo te passa o codigo blx

    1. Rafael Clares

      Nil, leia os comentários, tem muitas resoluções de problemas nele! Estou sem tempo para avaliar códigos!

  76. Walter Alves

    Cara, queria te parabenizar pelo post, a web é realmente uma grande fonte
    de informações, mas a maioria delas são ineficaz.
    Andei procurando como enviar e-mail com php e autenticado, já tentei varios recursos
    que busquei na web, porem nenhum funcionou!
    Sempre que testava o script ficava olhando minha caixa de entrada na expectativa de
    ver a mensagem nela, mais nada acontecia. Por fim, quase desistindo, achei seu bendito tutorial
    no google, teste, e funcionou direitinho!!!
    Valeu, parabéns mesmo!
    abraços…

    Juninho

    1. Rafael Clares

      Valeu Walter, sucesso para você. Abraços

  77. Anderson

    Parabéns pelo post, para mim funcionou perfeitamente… estou agora penando para fazer upload com jquery e php…. em um formulário que eu possa colocar até 20 fotos… se tiver algo para me dar uma luz,,,, seria muito legal

  78. Vitor Hugo

    Ótimo post! da pra fazer exatamente tudo!
    Muito obrigado!

  79. Lucio

    Obrigado cara, testei aqui e funcionou direitinho ^^

  80. Osmar

    Desculpe a pergunta de principiante, entendo muito pouco. O formulário do meu site estava com esse problema de não enviar, então refiz ele pelo seu método e deu certinho!!

    Mas gostaria de incluir uma página “sucesso.html” caso o formulário foi enviado, ou “erro.html” caso der algum erro, em vez de utilizar a forma que vc colocou no php abaixo:

    #enviando e retornando o status de envio
    47 if(!$mail->Send())
    48 {
    49 echo “houve um erro ao enviar o email! erro: $mail->ErrorInfo”;
    50 #$mail->ErrorInfo informa onde ocorreu o erro, o uso opcional
    51 exit;
    52 }
    53 echo “Mensagem enviada ok”;
    54 ?>

    Como faço isso?
    Muito grato desde já

    1. Rafael Clares

      if(!$mail->Send())
      {
      header(‘Location: erro.html’);
      }
      else
      {
      header(‘Location: sucesso.html’);
      }

      1. Osmar

        Muitíssimo obrigado! Esse código funcionou perfeito. Obrigado novamente pelo post e pela ajuda! Saudações

        1. Rafael Clares

          Valeu Osmar, qualquer coisa dá um grito! abs

  81. Gustavo Totta

    apresentou um erro (você sabe como posso solucionar o mesmo?) grato!:

    houve um erro ao enviar o email! erro: The following From address failed: [email protected]

    1. Rafael Clares

      O endereço de destino está incorreto, verifique se está passando o endereço corretamente sem esse trecho “mailto” que está aí no comentário.

  82. Thiago Bettanzos

    Aê Rafael, consegui fazer a autenticação utilizando o Gmail (smtp.gmail.com) e o Hotmail (smtp.live.com). Não deu erro algum no script. Porém os e-mails enviados para o Hotmail vão direto para o spam, mesmo quando autentico pelo próprio Hotmail. Tem ideia de o porquê isso acontece?

    1. Thiago Bettanzos

      Ahh, detalhe … meu domínio e meu IP são “limpos” … nunca utilizei eles pra spam e já me certifiquei que eles não estão nas blacklists … ou seja, não teria motivo para ir ao spam. Inclusive o email enviado de teste é um texto puro.

    2. Rafael Clares

      Fala Thiago, desculpa a demora pra responder. Velho não tenho ideia do que pode ser, estranho isso eu nunca vi. Veja se não é o nome que está usando ao setar o FromName=”Thiago….”, não sei, talvez
      estando diferente do original. Depois vou tentar simular isso. Abs

      1. Eduardo Scopel

        é… o hotmail ficou bem chato pra trabalhar com envio automático. Eu usava ele mais o yahoo para receber backups de banco de dados. Do nada o hotmail parou de receber. Nem ao menos avisou, alertou ou mandou para pasta de spam. Simplesmente começou a bloquear esse email. E estava na mesma situação descrita pelo colega: marcado como confiável. Isso está ocorrendo desde mais ou menos início deste mês(junho).
        Abraços,
        Eduardo Scopel

  83. eddpo

    como que eu faço para enviar uma imagem por e-mail numa página em php ?

    eu uso a função mail(), mas só consigo enviar texto ?

    1. Rafael Clares

      Cara, com a função mail não rola. Você pode enviar imagens com a função do PHPMailer descrito no post.
      Faça o seguinte, baixe o PHPMailler e descompacte os fontes, dentro da pasta “examples” já tem um exemplo pronto para envio de imagens ou qualquer outro anexo, inclusive HTML. Zip, etc…
      Segue o link http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list

      abs

  84. Willian

    Parabéns…Excelente dica. É sempre bom ver que existem pessoas que compartilham conhecimento. Muito obrigado.

  85. Daniel

    Obrigado! Agora um pequeno detalhe, como impedir o reevio duplicado na página contato caso o usuário pressionar F5, pois é mandado váriso duplicados. Como criar uma regra para que os valores sejam resetados e preenchidos novmente?

    1. Rafael Clares

      Daniel, o correto é fazer um redirecionamento após o envio (com sucesso) do e-mail. Ex:
      if( $mail->send() )
      {
      @header(‘Location: sucesso.php’);
      }

      Assim, o usuário é redirecionado a uma página diferente e mesmo que dê F5 não enviará novamente o form;.

  86. Igusson

    Boa Tarde, Rafael! Sou autodidata e ainda tenho muito para aprender, se puder me ajudar…No site, tem o arquivo contato.xml que chama o contact.php, já fiz vários testes com diferentes scripts de formulários que já utilizei anteriormente e que deram certo, mas não estou conseguindo fazer funcionar, o que está errado? Abaixo os códigos:

    CONTATO.XML

    —————————————–
    CONTACT.PHP

    <?
    $email = $_POST['email'];
    $mensagem = $_POST['mensagem'];

    global $email;

    mail ("[email protected]",
    "Email: $email
    Mensagem: $mensagem",
    "From: $email");

    echo "Sua mensagem foi enviada com sucesso!”;
    echo “Em breve entraremos em contato.”;
    ?>

    1. Rafael Clares

      Igusson, você está rodando isso no seu computador, em um servidor remoto, como é?

  87. Ricardo

    Blz Rafael, primeiro parabéns pelo tuto, mais vamos lá, esse projeto que eu estou fazendo, ele é hospedado na Locaweb(particulamente não gossto) mais em fim, fiz as modificações necessárias e tal, mais ele exibe a seguinte mensagem.

    PHP Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.r2editorial.com.br:25 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
    ) in E:homer2criacoeswebkiteducacionalphpmailerclass.smtp.php on line 105

    Pode me ajudar a resolver, já tentei de tudo mais ainda nada. abs.

    1. Rafael Clares

      Fala Ricardo, cara quando você diz “tentei de tudo”, o que seria?
      É bom comentar o que já fez para não perdermos tempo, assim evitamos que eu fale para fazer o que já fez.
      Nesse caso, as possibilidades são:
      – porta incorreta (as vezes alteram a padrão de 25 para uma outra, confirme com o host)
      – endereço smtp incorreto (pode ser que seja mail.seusite.com.br ao invés de smtp.seusite.com.br)
      – outra possibilidade é de login incorreto (usuário/email completo e senha)

  88. christiano rodrigues

    RAfael clares

    estou com um problema com um scrip em php que consegui com um colega a alguns anos e nunca tinha utilizado!! um belo dia resolvi para este script para um cliente, sou webdesign, e ele esta dando um erro que nao consigo entender nem resolver!! sera que poderia me ajudar!!! esta eh a mensagem que sta dando erro!! nao sou programador!!!

    Developer Details:
    E-mail nã foi enviado. Erro : Failed to connect to smtp.seudominio.com.br:25 [SMTP: Failed to connect socket: php_network_getaddresses: getaddrinfo failed: Name or service not known (code: -1, response: )]. (EMAIL_FAILED)

    tNG Execution Trace – VIEW

    tNG_update.executeTransaction
    STARTER.Trigger_Default_Starter
    tNG_update.doTransaction
    BEFORE.Trigger_Default_saveData
    tNG_update.saveData
    BEFORE.Trigger_Default_FormValidation
    BEFORE.Trigger_ForgotPasswordCheckEmail
    tNG_update.prepareSQL
    tNG_update.executeTransaction – execute sql
    AFTER.Trigger_ForgotPassword_AddDynamicFields

    AFTER.Trigger_ForgotPassword_Email*

    ERROR.Trigger_ForgotPassword_RemoveDynamicFields
    tNG_update.getRecordset
    tNG_update.getFakeRsArr
    tNG_update.getLocalRecordset
    tNG_update.getFakeRecordset

    valeu mesmo!!!

    1. Rafael Clares

      rsrs Cristiano, a mensagem está dizendo que não foi possível conectar em smtp.seudominio.com.br:25
      Isso quer dizer que você deve substituir smtp.seudominio.com.br pelo endereço do seu site ex:
      smtp.cristiano.com.br:25

  89. kiel

    Raphael
    Vlw amigo!
    Estava procurando na net e vim parar aqui.
    Tudo mastigadinho ^^
    Obrigado, mano!

  90. william

    estou com problema esta apresentando a seguinte mensagem:
    houve um erro ao enviar o email!

    Language string failed to load: from_failed [email protected]
    ,
    mandei por email o cod para poder me auxilar, seu tópico ficou muito bom.

    1. Rafael Clares

      Willian, esse erro é genérico e ocorre nas seguintes situações:
      – servidor smtp incorreto ( pode ser smtp.site.com.br e tbm pode ser mail.site.com.br), confirme com o host.
      – Porta incorreta (pode ser 587 ou 25) confirme com o host
      – usuário ou senha incorreta (usuario é o email completo)
      – email inválido

      Basta checar com calma cada dado e dará certo.

  91. Marcos Paulo

    Yahoo:
    $mail->SMTPSecure = ‘tsl’

  92. Alvaro

    Rafael, ótimo sua explicação, por favor me ajude. Estou tendo o mesmo problema seu.
    Mudei meu serviço de hospedagem do provedor Locaweb para um provedor Hostinger.
    Depois da mudança não estou conseguindo enviar meu formulario de contato que antes funcionava perfeitamente na Locaweb. Quando clico em enviar não acontece nada. Não da erro a pagina apenas sobe um pouco. Não sei se eles usam autenticação.

    Eu ja fiz o upload dos arquivos do site para o novo provedor inclusive da classe phpmailer identico ao anterior que usava na locaweb. Como não mudei nada é logico que o erro é no arquivo envia.php que ainda não esta totalmente configurado ao novo provedor hostinger, ja que os formulários html tudo é padrão uso o mesmo em todos os sites e funcionava ok.

    Abaixo eu mostro, o arquivo com as configurações sugeridas pelo novo provedor. E também o código do envia.php.
    Caso tenha alguma linha que não estaja de acordo com os parametros do novo provedor favor sugerir qual mudança devo fazer.
    Obs. A única mudança que fiz foi não colocar meu e-mail e senha do arquivo php por questão de privacidade, mas fora isto esta igual ao que enviei ao servidor.

    Lembrando peguei este mesmo arquivo voltei na locaweb e so mudei o hoste usuario e senha e envio normal. So na hostinger esta dando zebra.

    Configuração do novo provedor de hospedagem hostinger.

    Endereço do Webmail____http://webmail.hostinger.com.br
    Login de Usuario________E-mail do Usuário
    Host POP3/IMAP________mx1.hostinger.com.br
    Porta POP3____________110
    Porta IMAP____________143
    Host SMTP____________mx1.hostinger.com.br
    Porta SMTP___________2525

    Arquivo envia.php

    IsSMTP();
    $mailer->SMTPDebug = 1;
    $mailer->Port = 2525; //Indica a porta de conexão para a saída de e-mails
    $mailer->Host = ‘mx1.hostinger.com.br’; //smtp.dominio.com.br
    $mailer->SMTPAuth = true; //define se haverá ou não autenticação no SMTP
    $mailer->Username = ‘[email protected]’; //Informe o e-mai o completo
    $mailer->Password = ‘minha senha’; //Senha da caixa postal
    $mailer->FromName = ‘Contato do Site -X’; //Nome que será exibido para o destinatário
    $mailer->From = ‘[email protected]’; //Obrigatório ser a mesma caixa postal indicada em “username”
    $mailer->AddAddress(‘[email protected]’); //Destinatários
    $mailer->AddReplyTo($emailusuario,$nomeusuario);
    $mailer->Subject = $assunto;
    $mailer->Body = $mensagem;
    $mailer->Send();

    if (!$mailer)
    {
    echo “Message was not sent”;
    echo “Mailer Error: ” . $mailer->ErrorInfo; exit;
    }
    else
    print “E-mail enviado!”
    ?>

    Obrigado

    1. Rafael Clares

      Alvaro, alguns hosts só permitem se o TLS estiver ativado.
      A última versão do phpmailer tem o TLS, faça o download no site deles e procure o exemplo com TLS, é o mesmo exemplo que usa a conta do google.
      abs

      1. Nilo Neregato

        Eu utilizei justamente com o TLS, mas não deu certo. Quando eu configuro para receber SMTP no servidor de email do hostinger, a mensagem de erro indica que não foi possível conectar. E quando configuro para receber no gmail, a mensagem de erro indica que não foi possível autenticar. Será que é alguma configuração no php.ini e no httpd.conf do hostinger?

        1. Rafael Clares

          Nilo, pode ser também a versão do PHPMailer, baixe a última versão e teste novamente.
          Obs: existem alguns exemplos no pacote que disponibilizam, um deles é para o gmail.

          Link:
          https://github.com/PHPMailer/PHPMailer

          Só clicar em “Download Zip” no lado direito do site;

          Abraços

  93. paulo robson

    Ajudou demais amigo Rafael Clares
    Grande blog ta de parabéns
    a dica de colocar Localhost em vez de SMTP.DOMINIO.COM.BR
    caiu igual uma luva
    parabéns
    vlw mesmo

  94. petertrix

    Olá Rafael parabéns pelo post e acompanho há anos seu trabalho e de muita utilidade, se possível queria que você pudesse me ajudar tenho esse formulário já pronto com campos para anexo, só que é o seguinte, eu uso o sistema “UPLOADIFY” creio que vc já conhece envia anexo dinamicamente, meu formulário funciona perfeitamente ele envia os anexos para a pasta que esta em meu servidor usando a classe phpmailer corretamente só que estou tentando ver a função que ao mesmo tempo que ele envia os anexos para o servidor envia tbm para o email ao mesmo, sei que da pra fazer isso na função php mas estou com dificuldades se pudesse me ajudar agradeceria muito , obrigado…

    Este link é do meu site http://www.jcimoveisbrasil.com/cadastrodeimoveis/index.php os 12 botões input type acima funciona e envia os anexos para o email mas eu queria usar um botão único com o uploadify…

    1. Rafael Clares

      Peter, obrigado pelo comentário e por acompanhar o blog. Fico feliz que algo tenha lhe servido.
      Isso que você tem que fazer é no PHPMailer e não no uploadfy. Tem uma opção de anexar arquivos (algo como $mail->attach(“arquivo”), não lembro, mas tem).
      Então, você precisa fazer é passar o nome do arquivo que acabou de subir para o método de anexar do phpmailer.
      Você precisa ler as docs do PHPMailer;

  95. petertrix

    Preciso de um Help Rafael, teria como enviar anexos para o email pelo “uploadify” eu já instalei no meu form ele envia certinho os arquivos para a pasta no servidor de nome “uploads” só que queria que enviasse tbm para o email há possibilildade disso ?

    1. Rafael Clares

      Olá Peter, cara melhor você dar uma olhada nas 2 docs, não ? Veja as docs do uploadFy (aproveite e use a última versão dos 2);

  96. petertrix

    Olá Rafael desculpa por perguntar 2 vezes mas já consegui resolver vc me dando uma dicas e eu como sou marrento e brasileiro não desisto nunca rsrs, consegui fazer um formulário conforme minhas necessidades e como você disse em um comentário acima muitas pessoas vêm aqui pedem muito desesperadamente uma ajuda e quando consegue o que quer some e não compartilha os seus erros e correções que podem ser o mesmo problema de muitos, mas quero fazer a diferença e deixar aqui um script de formulário com upload de fotos pronto pra usar se me der a liberdade de postar aqui ok…
    Rafael é sempre bom um profissional que sabe compartilhar seus conhecimentos assim como você isso sempre será recompensado, forte abraço parceiro.

    Segue abaixo o link do script que deixei pronto no Pastebin

    http://pastebin.com/py7ErJYM

  97. Lauro Moraes

    Olá Rafael, obrigado por compartilhar seu conhecimento…eu usava mail mas não era 100% eficaz depois de sua dica para phpmailer melhorou muito 🙂
    Bom tenho duas dúvidas pra perguntar se voçê puder me ajudar tbm:
    *Primeira: reparei que os e-mails são enviados mas o ultimo sempre fica retido ou seja, não é enviado ao meu e-mail de destino até que um novo seja enviado…sabes o q podes ser??? Não creio que seja config do server pois se eu enviar por exemplo 7 e-mails seguidos ele manda os 6 primeiros em ordem e rápido más retém o ultimo.
    *Segunda: é possível mandar um e-mail com cabeçalho corpo e rodapé com esta classe??? Tipo anexar minha logo entre outras??
    Desde já grato.

  98. Jose paulo Barbosa

    Parabens Rafael no meu funcionou perfeitamente só mudei a porta para o smtp do uol rodou que foi uma maravilha agora é bater cabeça para enviar anexo

    Muito obrigado e parabens pelo blog

  99. Diogo Leite Gomes

    gostaria de saber onde coloco este codigo pois o meu servidor requer autenticacao stmp
    tipo vou realizar um cadastro de usuario e o mesmo recebe confirmacao no email para autenticacao onde as informacoes vao ao banco de dados mysql gostaria de como incluir esta parte onde autentica o email?

    87-99627-8345 Whatsapp | e-mail: [email protected]

Os comentários estão encerrados.