Enviando email autenticado – PHP5

Email Autenticado com PHP5 – Classe PHPMailer

Esse Post foi movido para :

http://clares.com.br/2008/08/08/enviando-email-com-autenticacao-php/

Desculpe pelo transtorno, aproveite para assinar o novo blog.

Marcado:, , , , ,

125 pensamentos sobre “Enviando email autenticado – PHP5

  1. Rafael Soares agosto 8, 2008 às 10:54 am

    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 agosto 9, 2008 às 2:39 am

    salvou minha vida

  3. Luiz agosto 11, 2008 às 2:19 pm

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

    O que pode ser?

  4. clares agosto 11, 2008 às 7:30 pm

    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 agosto 13, 2008 às 2:09 pm

    Bom dia!!

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

    desde já, agradeço.

  6. Rafael Clares agosto 14, 2008 às 2:36 am

    Olá xará, olha não há muito conteúdo na internet sobre Message-ID, mas posso lhe adiantar que você deverá setar a variável $hostname, se lhe ajudar segue ai o link com a informação.
    http://www.bblog.com/apidoc/elementindex_PHPMailer.html
    Se eu tiver alguma novidade publico aqui.
    Abraços,

  7. Rafael agosto 25, 2008 às 2:18 am

    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!

  8. Rafael Clares agosto 25, 2008 às 3:45 am

    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 = “seuusuarionoyahoo@yahoo.com.br”;

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

    abraços,

  9. Rafael agosto 25, 2008 às 12:11 pm

    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 :)

  10. Gilson agosto 26, 2008 às 2:33 pm

    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.

  11. Ricardo Spinoza setembro 1, 2008 às 5:31 pm

    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.

  12. andrey setembro 5, 2008 às 4:19 am

    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!

  13. Rafael Clares setembro 5, 2008 às 4:25 am

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

  14. andrey setembro 5, 2008 às 1:28 pm

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

  15. Rafael Clares setembro 5, 2008 às 1:57 pm

    Andrey, me envie o arquivo em rafadinix@gmail.com e me passe o url desse seu site e te digo o que você está fazendo errado. Até logo

  16. Marcos Paulo setembro 6, 2008 às 8:38 pm

    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!

  17. Rafael Clares setembro 9, 2008 às 12:30 am

    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

  18. Diego Ramos setembro 22, 2008 às 6:57 pm

    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

  19. Rafael Clares setembro 22, 2008 às 7:03 pm

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

  20. Joao Paulo Villela setembro 30, 2008 às 1:43 am

    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.

  21. Rafael Clares setembro 30, 2008 às 1:57 am

    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

  22. Joao Paulo Villela setembro 30, 2008 às 2:30 am

    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…

  23. Rafael Clares setembro 30, 2008 às 2:33 am

    manda o codigo php que gera o html para rafadinix@gmail.com (retire sua senha) vou testar e te falo. ate logo

  24. Francisco apterix outubro 12, 2008 às 10:28 pm

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

  25. Gustavo outubro 13, 2008 às 8:40 pm

    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!!

  26. Rafael Clares outubro 13, 2008 às 10:16 pm

    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: mailtesteblog@yahoo.com.br
    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

  27. Frank Barbosa outubro 17, 2008 às 2:32 pm

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

  28. Rafael Clares outubro 17, 2008 às 2:50 pm

    Frank, baixe o PHPMailer, no pacote existe o diretório “Examples”… Lá existe o exemplo para o Gmail.
    link :
    http://phpmailer.codeworxtech.com/index.php?pg=sf&p=dl

  29. Frank Barbosa outubro 17, 2008 às 3:19 pm

    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?

  30. Rafael Clares outubro 17, 2008 às 10:45 pm

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

    Abraços

  31. Gustavo outubro 21, 2008 às 2:54 pm

    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.

  32. Rafael Clares outubro 21, 2008 às 7:30 pm

    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

  33. Aline outubro 22, 2008 às 11:45 am

    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

  34. Aline outubro 22, 2008 às 12:59 pm

    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

  35. Pedro outubro 24, 2008 às 12:57 pm

    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@acharei.com.br

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = “smtp.gmail.com”;
    $mail->SMTPAuth = true;
    $mail->Mailer = “smtp”;
    $mail->Username = “********”;
    $mail->Password = “*******”;
    $mail->From = “contato@acharei.com”;
    $mail->FromName = “Acharei”;

    O que Pode estar dando errado ?

  36. Rafael Clares outubro 24, 2008 às 5:38 pm

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

  37. Phillipe outubro 27, 2008 às 12:01 pm

    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

  38. Rafael Clares outubro 27, 2008 às 12:09 pm

    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

  39. Jonatan outubro 27, 2008 às 1:20 pm

    Parabéns pelo Post salvou minha pele hehe…

  40. Eugênio outubro 27, 2008 às 3:42 pm

    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!

  41. Eugênio outubro 27, 2008 às 3:59 pm

    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!

  42. Rafael Clares outubro 27, 2008 às 4:48 pm

    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?

  43. Phillipe outubro 27, 2008 às 6:17 pm

    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 :D pls estou realmente precisando.

  44. Rafael Clares novembro 6, 2008 às 12:33 am

    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

  45. Rafael Clares novembro 6, 2008 às 12:37 am

    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.

  46. Cleiton novembro 25, 2008 às 7:16 pm

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

  47. Rafael Clares novembro 26, 2008 às 12:03 am

    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.

  48. Fellipe Borges janeiro 16, 2009 às 11:05 am

    Olá Rafael!

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

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

  49. Renan janeiro 16, 2009 às 1:16 pm

    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).

  50. Rafael Clares janeiro 16, 2009 às 1:46 pm

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

  51. Diego janeiro 30, 2009 às 2:36 am

    Eae Rafa!!!

    Parabén pelo artigo!!!

    Abraços do amigo!!

  52. Romulo fevereiro 1, 2009 às 9:19 pm

    Simples, objetivo e muito bem explicado!

    Perfeito, parabéns Rafael :D

  53. Juno Rodrigues fevereiro 3, 2009 às 5:56 pm

    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

    • Rafael Clares fevereiro 5, 2009 às 10:41 pm

      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.

  54. Luiz Manuel Gomes fevereiro 6, 2009 às 4:16 pm

    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

  55. Luiz V. fevereiro 11, 2009 às 9:27 pm

    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 anotapreta@yahoo.com.br por favor. Meu site é um site pronto e não tenho nem idéia de como fazer funcionar o envio autenticado.

    • Rafael Clares fevereiro 12, 2009 às 10:42 pm

      É 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

  56. Ricardo Augusto Nunes abril 2, 2009 às 12:23 pm

    Cara perfeito o script, parabens!

  57. Thiago junho 16, 2009 às 7:21 pm

    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

  58. Juca julho 9, 2009 às 1:17 am

    Muito bom meu caro!
    Valeu!!

  59. Dreyson julho 28, 2009 às 2:32 pm

    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 = “dreyson@recifetecnologia.com.br”;
    $mail->Password = “xxxx”; // senha
    //email utilizado para o envio
    //pode ser o mesmo de username
    $mail->From = “dreyson@recifetecnologia.com.br”;
    $mail->FromName = “FORMULÁRIO DE CONTATO DO SITE”;

    //Enderecos que devem ser enviadas as mensagens
    $mail->AddAddress(“dreyson@recifetecnologia.com.br”,”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: $nome\n”;
    $msg .= “ E-mail: $email\n”;
    $msg .= “ TEL: $tel\n”;
    $msg .= “ Mensagem: $mensagem\n”;
    }

    $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;
    }
    ?>

    • Rafael Clares julho 29, 2009 às 11:55 am

      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

  60. Dreyson julho 29, 2009 às 12:24 pm

    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!!!!

  61. Dreyson julho 30, 2009 às 2:15 pm

    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.’;

    • Rafael Clares julho 30, 2009 às 2:44 pm

      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).
      rafadinix@gmail.com (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,

  62. Bruno Barros agosto 21, 2009 às 1:48 am

    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!

    • Rafael Clares agosto 21, 2009 às 3:42 pm

      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

      • Bruno Barros agosto 22, 2009 às 1:18 am

        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!

      • Rafael Clares agosto 22, 2009 às 6:25 pm

        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 rafadinix@gmail.com para eu ver se consigo te ajudar…flw

      • Rafael Clares setembro 3, 2009 às 11:37 pm

        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,

  63. R4 setembro 10, 2009 às 7:50 pm

    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.0\www\mail\phpmailer\class.phpmailer.php on line 1091
    Deprecated: Function set_magic_quotes_runtime() is deprecated in E:\EasyPHP5.3.0\www\mail\phpmailer\class.phpmailer.php on line 1095

    Você teve algum problema semelhante?

    • Rafael Clares setembro 12, 2009 às 6:45 pm

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

  64. Milton Salles setembro 24, 2009 às 12:46 pm

    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…

  65. Eduardo setembro 29, 2009 às 9:53 pm

    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:\apache\htdocs\teste_email\phpmailer\class.phpmailer.php on line 460

    Fatal error: Cannot instantiate non-existent class: smtp in c:\apache\htdocs\teste_email\phpmailer\class.phpmailer.php on line 527

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

    • Rafael Clares setembro 29, 2009 às 10:48 pm

      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

      • Eduardo setembro 29, 2009 às 11:08 pm

        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

      • Rafael Clares setembro 29, 2009 às 11:16 pm

        Então Eduardo, o problema está na sua versão do PHP.
        Baixe esse arquivo e substitua pelos que você tem aí.
        http://clareslab.com.br/learn/mail/php4.rar

        Abraços

  66. Eduardo setembro 29, 2009 às 10:52 pm

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

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

    Fatal error: Cannot instantiate non-existent class: smtp in c:\apache\htdocs\teste_email\phpmailer\class.phpmailer.php on line 527

    Alguém pode me ajudar?
    Abraços!

  67. Luan Marcos Isidoro outubro 24, 2009 às 12:28 pm

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

  68. Jaderson Trierweiler dezembro 17, 2009 às 5:47 pm

    Valeu pelo post
    Serviu como consulta para mim

  69. Fábio fevereiro 1, 2010 às 2:25 pm

    Boa Solução parabens, funcionou mesmo bem ;)

    Cumps

  70. Emanuel maio 7, 2010 às 8:53 am

    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

    • Rafael Clares maio 16, 2010 às 2:19 pm

      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

  71. Otávio julho 26, 2010 às 2:10 pm

    Valew Brother Post Perfeito

  72. Diogo agosto 10, 2010 às 7:37 pm

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

    Abs

    • Rafael Clares agosto 10, 2010 às 8:00 pm

      Diogo, testou mais de um email ?

      • Diogo agosto 10, 2010 às 8:26 pm

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

      • Rafael Clares agosto 11, 2010 às 2:07 am

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

  73. Diogo agosto 13, 2010 às 7:13 pm

    Funcionou aqui Rafael.
    Valeu a atenção!

  74. Reinaldo Deprera agosto 22, 2010 às 2:04 am

    Tem outro tutorial muito bom sobre isso, e numa versão mais recente do phpmaileir:
    Usando o Smtp do Google com o PHPMailer

  75. Julio abril 18, 2011 às 1:10 pm

    Muito obrigado pelo código! Funcionou perfeitamente!

  76. Allex maio 11, 2011 às 11:43 pm

    Valeu Rafael.

    Funcionou perfeito.

    Abraços!!!

  77. Milene Fermo Manfredini outubro 2, 2011 às 3:17 am

    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: from_failedmilenefm@hotmail.com

    $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 = “milenefm@hotmail.com”;

    Muito Obrigada,
    Abraços,
    Milene

    • Rafael Clares outubro 5, 2011 às 3:40 am

      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

  78. nil outubro 9, 2011 às 5:31 pm

    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

    • Rafael Clares outubro 17, 2011 às 1:47 am

      Nil, tem que seguir o tutorial!

  79. nil outubro 21, 2011 às 11:57 pm

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

    • Rafael Clares outubro 29, 2011 às 8:00 pm

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

  80. Walter Alves dezembro 19, 2011 às 7:48 pm

    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

    • Rafael Clares janeiro 5, 2012 às 2:13 am

      Valeu Walter, sucesso para você. Abraços

  81. Anderson janeiro 29, 2012 às 5:54 pm

    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

  82. Vitor Hugo março 1, 2012 às 4:45 am

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

  83. Lucio março 19, 2012 às 3:22 am

    Obrigado cara, testei aqui e funcionou direitinho ^^

  84. Osmar abril 10, 2012 às 7:03 pm

    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á

    • Rafael Clares abril 10, 2012 às 7:41 pm

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

      • Osmar abril 12, 2012 às 2:17 pm

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

      • Rafael Clares abril 22, 2012 às 2:45 am

        Valeu Osmar, qualquer coisa dá um grito! abs

  85. Gustavo Totta maio 21, 2012 às 6:37 pm

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

    houve um erro ao enviar o email! erro: The following From address failed: contato@imobiliarianc.com

    • Rafael Clares maio 23, 2012 às 9:09 pm

      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.

  86. Thiago Bettanzos junho 7, 2012 às 6:54 pm

    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?

    • Thiago Bettanzos junho 7, 2012 às 6:58 pm

      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.

    • Rafael Clares junho 12, 2012 às 4:26 pm

      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

      • Eduardo Scopel junho 12, 2012 às 4:34 pm

        é… 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

  87. eddpo julho 3, 2012 às 7:42 pm

    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 ?

    • Rafael Clares julho 4, 2012 às 11:03 pm

      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

  88. Willian agosto 6, 2012 às 2:18 am

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

  89. Daniel agosto 9, 2012 às 9:07 pm

    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?

    • Rafael Clares agosto 13, 2012 às 2:05 pm

      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;.

  90. Igusson setembro 3, 2012 às 4:40 pm

    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 ("meuemail@dominio.com.br",
    "Email: $email
    Mensagem: $mensagem",
    "From: $email");

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

    • Rafael Clares setembro 5, 2012 às 5:04 pm

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

  91. Ricardo setembro 13, 2012 às 11:57 am

    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:\home\r2criacoes\web\kiteducacional\phpmailer\class.smtp.php on line 105

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

    • Rafael Clares setembro 13, 2012 às 12:11 pm

      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)

  92. christiano rodrigues setembro 24, 2012 às 1:17 pm

    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!!!

    • Rafael Clares setembro 24, 2012 às 1:20 pm

      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

  93. kiel outubro 14, 2012 às 9:30 pm

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

Os comentários estão desativados.

%d blogueiros gostam disto: