Formulário para enviar e-mail em php que funciona! envia de e-mail, com validação, php, html, css, Javascript.

Olá, caros desenvolvedores, se estão procurando um formulário que funcione chegaram no lugar certo!

Clique aqui para fazer o download Formulário em PHP

Já fiquei horas e horas procurando um formulário para envio de e-mail que funciona-se, encontrei alguns na web que até funcionavam mas apenas em alguns servidores, e sempre tinha alguns bugs, juntei os cacos e adaptei esse formulário que realmente funciona!

Em fim, chega de problemas!

Testei esse formulário em alguns servidores e está funcionando, o envia.php é muito simples, basta trocar o e-mail! sem aquele monte de códigos que não servem pra nada, o formulário está com validação, não tem erro de acentuação!

.Sem erros de acentuação
.fácil e simples de utilizar
.funciona em todos os servidores (pelo menos em todos que eu testei)

*Mas caso encontrem algum erro por favor comentem

Duvidas, elogios, sugestões, criticas, comentem!

Clique aqui para fazer o download Formulário em PHP

Comentar

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*

177 Comentários

  1. Oi!
    Muito obrigada pelo formulário! Ajudou mto mesmo, porém estou com 2 probleminhas q agradeço se puder me ajudar:

    – no .rar disponibilizado falta o arquivo SpryValidationSelect.css
    – e como faço pra caixa em que eu escrevo a mensagem não possibilitar ajuste ao usuário?
    Pq no Safari, eu consigo aumentar a caixa o qto quiser pelo canto inferior direito, estragando todo o layour! rs

    Desde já, obrigada!!!

    Responder
    • Olá
      Fico feliz que tenha ajudado
      A respeito do “SpryValidationSelect.css”, não coloquei porque não inseri “Select” no formulário, assim que possível te encaminho o link para que possa baixar.

      A função que faz com que as caixas de texto estiquem, vem dos browsers,
      o Chrome também tem essa função, infelizmente não sei como bloquear, acredito que o numero de pessoas que esticam a caixa seja bem baixo.

      Qualquer dúvida fico a disposição

      Responder
      • O expansor das caixas de texto pode ser desabilitado via CSS:

        textarea {
        resize: none
        }

        Responder
  2. Achei para a caixa não ampliar mais aqui:

    Tem que colocar depois da tag do text area
    style=”resize: none;”

    Assim não se corre o risco de fazerem essa sacanagem! rs

    Mas muito obrigada mesmo!

    Responder
    • OK Obrigado!
      Fica a dica!

      Responder
  3. Tentei usar o formulario, mas nao estou conseguindo, o que quer dizer com o email deve estar dentro do servidor web?
    Pois o email funciona corretamente, aparentemente tudo ok, porem os emails nao chegam na locaweb. Obrigada

    Responder
    • Olá

      Oque eu quero dizer com “o e-mail deve estar dentro do servidor”,
      veja um exemplo: seu site= “voce.com.br” logo seu e-mail que estará em seu servidor será “contato@voce.com.br”. espero que eu tenha ajudado, qualquer dúvida basta comentar

      Responder
      • Richard, entendi agora, ja arrumei, ….porem quando eu insiro os dados no site, ele para na pagina envia.php, e fica em branco.
        Eu nao recebo o email, e tb não vai para a tela de confirmação.
        voce poderia me ajudar?

        Responder
        • Richard fazendo os testes notei que o email só é enviado quando o campo nome esta com um e-mail valido, deve haver alguma validação naquele campo. como posso mudar isso.
          Ex do erro: em nome tenho que colocar isabela@isabela.com.br para o email ser realmente enviado e ter a confirmacao.

          Responder
          • O erro seria aqui? o return-path tb é o meu email?

            // O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822.
            // O return-path deve ser ser o mesmo e-mail do remetente.
            $headers = “MIME-Version: 1.1\r\n”;
            $headers .= “Content-type: text/html; charset=utf-8\r\n”;
            $headers .= “From: $nomeremetente\r\n”; // remetente
            $headers .= “Return-Path: isabela@isabela.com.br\r\n”; // return-path
            $envio = mail(“isabela@isabela.com.br”, $assunto, $mensagemHTML, $headers); // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web

          • O Return-Path deve ser mantido com seu e-mail, ou se preferir altere para “$emailremetente.” o retur-path é o e-mail que sera enviado uma notificação caso o e-mail não seja enviado, não sei como funciona exatamente essa função, sei que ela é necessária para que o formulário funcione corretamente.

          • Oi Isabela, verifique se as variáveis do “envia.php” estão chamando os campos corretos do formulário, esse erro não deveria acontecer.

        • Olá Isabela fiz o teste e está funcionando,

          Ao preencher o formulário, ele deve ler o “envia.php” para que possa enviar o e-mail, e ao final do script de envia ele redireciona para a página sucesso.html
          verifique se o caminho para está página está correto.

          Acredito que seja isso.

          Responder
      • Valeu, esse comentário fez meu formulário funcionar! Muito grata!

        Responder
        • Mas agora me apareceu um erro! o email de quem me envia não aparece no formulário que vai pro meu email. o resto aparece tudo. Alguma solução?

          Responder
          • Precisaria ver o código.

  4. Richard, acho que resolvi o problema fazendo assim, veja por favor se esta correto:

    / O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822.
    // O return-path deve ser ser o mesmo e-mail do remetente.
    $headers = “MIME-Version: 1.1\r\n”;
    $headers .= “Content-type: text/html; charset=utf-8\r\n”;
    $headers .= “From: isabela@isabela.com.br\r\n”; // remetente
    $headers .= “Return-Path: isabela@isabela.com.br\r\n”; // return-path
    $envio = mail(“isabela@isabela.com.br”, $assunto, $mensagemHTML, $headers); // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web

    colocando no from tb o meu email.
    Obrigada.

    Responder
    • Não é necessário fazer isso, apenas verifique se as variáveis estão chamando os campos corretos do formulário, o “From” apenas indica por quem foi enviado o e-mail, qualquer dúvida fico a disposição.

      Obrigado

      Responder
  5. Olá, gostaria de agradecer sua iniciativa em ajudar, e aproveitando, gostaria de pedir sua ajuda.
    Estou com problemas no form, ultilizo a locaweb, linux, ocorre que no email do remetente, ele chega, mas não com todas as informações, vem apenas telefone,cidade e assunto, fica faltando o nome, o email e a mensagem, já no email do destinário, ele chega, mas somente em branco, sem nenhuma informação. Estou a dias tentando resolver isso e nada. Já li e re li sobre o assunto e não consegui nada, nem preciso falar que na locaweb não consegui nadinha. Agradeceria imensamente se pudesse me ajudar, sou totalmente iniciante nesse assunto.

    Responder
    • Olá, acredito que primeiramente você deva verificar o “name” dos campos, veja se estão batendo com os do “envia.php”, se achar melhor pode postar seu form aqui para que eu veja ou me mandar no e-mail blog@richarddesign.com.br, talvez eu possa ajudar.

      Att.

      Responder
  6. Olá como faço para colocar o código do formulário no meu site!

    Responder
    • Olá Dijailton, é necessário ter um pouco de conhecimento em HTML, é um processo simples, basta copiar os códigos do index.html em sua página e copiar os arquivos para a pasta onde está o seu site.

      Responder
  7. Boas,

    O meu problema é que parece que está tudo trabalhando bem, porque me dá a informação de que o email foi enviado com sucesso, mas quando vou ver a caixa de entrada, não tenho lá nenhum email! 🙁

    HELP PLEASE 🙁

    Responder
  8. Muito obrigadaaaaaa…. você ajudou-me muito … valeu

    Responder
  9. Oh… ainda não recebi o e-mail no meu e-mail através do meu localhost. Eu recebi a mensagem de confirmação mais ainda não recebi o e-mai na minha caixa. Sera que sera diferente quando por o site live?

    Responder
    • Olá Irene, esse formulário só funciona quando ele está hospedado, se possível já faça o teste antes de por o site no ar.

      Responder
  10. Olá, primeiramente muito obrigado por disponibilizar o conteúdo, funcionou perfeitamente.

    Eu só gostaria de saber, como eu encaminho para duas contas de e-mail ?

    Att.

    Responder
    • Olá, basta duplicar a “linha” de envio = $envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);
      e substituir o $emaildestinatatio por outro email Ex.:

      $envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);
      $envio = mail(“email@dominio.com.br”, $assunto, $mensagemHTML, $headers);

      Responder
  11. Boa Tarde amigo,
    Funcionou perfeitamente! Muito Obrigado!
    Precisava de um formulário igual esse teu com anexo, você tem disponível?

    Obrigado.

    Responder
    • Tenho um similar, te envio por e-mail assim que possível.

      Abs.

      Responder
  12. Olá Richard! Eu coloquei coloquei seu formulário no site de um cliente, porém estou recebendo o seguinte erro quando o formulário tenta submeter.(envia.php)

    HTTP Error 405.0 – Method Not Allowed
    The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.

    O que pode ser?

    Responder
    • Olá, Gabriel infelizmente não sei oque pode ter acontecido, se preferir me mande seu form para que eu analise, richarddesignweb@gmail.com. Abs

      Responder
  13. Ola novamente,
    Como posso fazer pro campo telefone não ser obrigatório?
    Obrigado.

    Responder
    • Olá Wellenton, basta remover o “Spryassets”, antes do campo do telefone existe um “” basta remove-lo e remover também as tags de fechamento e texto de alerta dele ““. Abs

      Responder
  14. Olá Richard, eu uso esse código a alguns meses e sempre entrega o e-mail depois de alguns segundos só que no ultimo formulário que eu fiz ainda n recebi o e-mail e ja tem 3 horas que mandei. Como geralmente faço formularios pequenos, nunca tive problema com a entrega do e-mail mas o ultimo é um formulário muito grande (cerca de 70 campos) por que serve para cotação de seguros de automóvel. A quantidade de campos atrapalha tanto assim o desempenho do envia.php?

    Responder
    • Olá Diego, não acredito que essa demora seja referente ao número de campos, já fiz alguns formulários com muitos campos e nunca tive problemas, ao não ser quando havia algum anexo, mas nada muito sério, aconselho você a revisar o código se todos os campos estão sendo declarados corretamente, se estiver tudo Ok, não sei oque pode estar acontecendo.

      Abs.

      Responder
  15. Olá Richard, parabéns pelo form, realmente muito bom. Preciso de uma ajuda urgente. Preciso que meu formulario envie para vários emails de acordo com a unidade escolhida pelo usuário. Por exemplo, se ele escolher São Paulo, o email vai para a pessoa responsavel por esse estado, se escolher parana, vai para o email da pessoa responsavel pelo parana e assim por diante, saberia como fazer? Obrigadíssima!!!

    Responder
      • Oi Richard…obrigada pela resposta. Dá tudo certo, o formulario envia, responde com a pagina de agradecimento mas o email nao chega….abaixo o link…se puder ajudar, estou desesperada…tenho que finalizar isso … http://www.millennium-linguas.com.br/form3/

        Responder
        • Qual serviço de hospedagem está utilizando?

          Responder
          • Locaweb…

          • Então…eu tenho um formulario que funciona …o problema é justamente inserir o campo departamentos….se puder ajudar agradeço muito…

          • Então faça o seguinte, no seu formulário crie um “select” com os e-mails igual o formulário que você baixou, no seu arquivo que envia o formulário você precisa declarar a variavel “departamento”, e no campo onde fica o e-mail destinatário você insere a variável.

          • Se preferir mande seu for no meu e-mail richarddesignweb@gmail.com e assim que possível eu verifico para você.

  16. Boa Noite Richard.

    Obrigado pelo Script. Muito bom.
    Mas você não teria alguma orientação para me passar, pois recebo e-mails com palavras que tem acentuo como por ex:
    �rvore, Or�amento , Or�amento.

    Valeu

    Responder
  17. Muito obrigado por me ajudar, que Deus continue lhe capacitando a ajudar pessoas como eu, iniciante!!!

    Responder
    • Obrigado!

      Responder
  18. Maravilha! Funcionou no Hostinger.com.br.
    Porque é preciso utilizar email do servidor?
    É possivel um script que mande pro gmail né? Tipo perl ou ajax?
    Com somente com php é possivel tmb?
    Obrigado pela ajuda!

    Responder
  19. Oi Richard! Obrigada pelo formulário.. Estava difícil encontrar algum que funcionasse..
    Porém, estou com um problema. Será que você pode me ajudar? Tem vezes que o formulário funciona normal e vai para a página de redirecionamento e recebo o e-mail direitinho, mas tem algumas vezes que ele não vai para essa página e sim para a página “envia.php” e fica tudo em branco e não recebo o e-mail!
    Você sabe porque isso está acontecendo?
    Obrigada desde já!

    Responder
    • Olá Gabrielle,
      Essa é nova pra mim, ainda não me deparei com esse problema, isso só acontece quando o script não é executado,
      ai ele deve estacionar nessa página, infelizmente não sei como posso te ajudar. Como não é sempre que acontece isso, tente fazer alguns teste em navegadores diferentes. talvez encontre alguma pista.

      Responder
  20. Richard, esse formulario, nao consegues acrescentar o sql?

    Responder
    • Olá Pedro,
      Não me lembro de ter utilizado para inserir SQl, mas acredito que vá funcionar como qualquer outro form.
      Abs.

      Responder
      • Richard, fiz tudo como estás no ficheiro, só que ele não envia nada para o e-mail.
        Coloca o exemplo do código envia.php, para verificar se fiz algo de errado.
        O servidor que uso é o hostinger.
        Pode ser algum erro!

        Cumprimentos…

        Responder
          • Richard Soares, também uso o servidor “www.hostinger.com.br”, fiz tudo como dito e deu certo, porem tem alguns erros.

            $emaildestinatario = ‘felipewolmer@live.com’;
            Está dessa forma, os e-mails são enviados para minha caixa de entrada OutLook normalmente, porem demora cerca de 30 minutos ou mais para receber os e-mail.

            Isso é correto?

            Estou testando este formulário hoje, se houver mais algum problema te contato, ficarei grato se puder me ajudar.

            Abraço.

          • Olá Felipe, você é a segunda pessoa a reclamar desse problema, e no mesmo servidor “hostinger”, acredito que o problema seja no servidor.

  21. ola Richard, estou fazendo meu primeiro site agora, estou testando seu código no xampp usando localhost, eu teria q testar em um servidor on-line para funcionar? pq aqui mostra q foi enviado a menssagem mais nao chega, desde ja agradeco

    Responder
    • Esse form funciona apenas on-line no servidor local, não vai funcionar, utilizando um form autenticado talvez funcione.

      Responder
  22. Trabalho com Magento, e já tenho um formulário eu teria que trocar o action para que ele mande um e-mail pra minha caixa de e-mail

    <form action="getSubmitUrl($_product) ?>” method=”post” id=”product_addtocart_form”getOptions()): ?> enctype=”multipart/form-data”>

    mas não sei como fazer,alguma ideia?

    Responder
    • Olá Bruno, já utilizei o Magento algumas vezes, o que exatamente você precisa?

      Responder
      • Seria algo como…

        if {

        <form action="consulta.php " method="post" id="product_addtocart_form"getOptions()): ?> enctype=”multipart/form-data”>

        else {

        <form action="getSubmitUrl($_product) ?>” method=”post” id=”product_addtocart_form”getOptions()): ?> enctype=”multipart/form-data”>

        Responder
  23. Boa tarde, Richard, tudo bem?

    Vi seu formulário, está bem completo. Estou criando um site no DreamWeaver e ainda não contratei hospedagem, mas quando quero fazer testes online, faço upload no google drive, que funciona como uma hospedagem, mas quando tento enviar a mensagem, aparece o seguinte erro: The requested URL was not found on this server. That’s all we know.

    Você sabe o que pode ser? Se for a hospedagem, posso contar com esse formulário quando contratar um plano?

    Obrigado,

    Responder
  24. Boa noite, Richard. Quando eu envio o email, ele só fica colorido nos campos preenchidos e quando vou verificar o email, não tem nada. Sabe me dizer o que é? Agradeço desde já.
    Meu site: http://www.gacc.org.br.

    Responder
    • Ola Monalliza, não entendi exatamente seu problema, se poder me enviar seu form ou me explicar de outra posso dar uma olhada.

      Responder
  25. Olá Richard, primeiramente gostaria de agradecer você por compartilhar esse código conosco, porém estou com um problema, preencho normalmente o formulario, envio e aparece a pagina de sucesso, porém o e-mail não chega em minha caixa de e-mail, está hospedado na Locaweb

    o que será que pode ser ?

    Responder
  26. ola Ricardo td bom, olha to precisando urgene d sua ajuda, eu sou marinheiro de promeira viagem, e este e o meu segundo site, mas eu não saco muito php e duas categoria do site não estão funcionando é o de inscrição e contato, por favor como faço para adpitar seu programa de envia e index junto com essas duas categoria do meu site, por fvor me ajude to precisando urgente, e dono do site so vai me pagar quando eu mostrar pra eles essas categorias prontas, me explique com detalhe onde devo fazer, pq vc disse que no seu programa so basta mudar o e-mail e onde eu faço isso quero fazer isso para as duas categoria de inscrição e contato, por favor olhe meu site se possível vc pode fazer isso por mim, eu te agradeço, esero com urgência a sua resposta.

    grato,

    Enio.

    Responder
  27. Não consegui fazer o envio e nem chamar minha página de confirmacao.html conforme mostrado abaixo:

    Favor me explicar mais detalhadamente.

    // O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822. ?????
    // O return-path deve ser o mesmo e-mail do remetente. ?????
    $headers = “MIME-Version: 1.1\r\n”;
    $headers .= “Content-type: text/html; charset=utf-8\r\n”;
    $headers .= “From: $email\r\n”; // remetente
    $headers .= “Return-Path: $emaildestinatario \r\n”; // return-path
    $envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);

    if($envio)
    echo “location.href=’confirmacao.html'”; // Página que será redirecionada ?????

    ?>

    Responder
    • Olá Rafael, as únicas ações que deve fazer é inserir seu e-mail onde está pedindo, se o envio funcionar ele redireciona para o caminho que você inserir no location.href…

      Responder
  28. Muito bom, funciona certinho!
    Só acrescentei essa linha:
    echo ” alert(‘Enviado com Sucesso’) “;
    Parabéns!
    Esse realmente funciona.

    Responder
  29. coloquei o formulário de contato funciona mais o layout e as informações não aparecem pode me dizer onde alterar no código. Obrigado

    Responder
    • Olá Leonardo o que exatamente não aparece?

      Responder
  30. Bom dia, Muito bom seu formulario, esta funcionando normal porem as mensgens não chega oque eu faço:
    Nesse PHP ha algo errado????
    <?php

    // Passando os dados obtidos pelo formulário para as variáveis abaixo
    $nomeremetente = $_POST['nomeremetente'];
    $emailremetente = trim($_POST['emailremetente']);
    $emaildestinatario = 'Rvs@rvstecnologia.com.br'; // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web
    $ddd = $_POST['ddd'];
    $telefone = $_POST['telefone'];
    $assunto = $_POST['assunto'];
    $outros = $_POST['outros'];
    $mensagem = $_POST['mensagem'];

    /* Montando a mensagem a ser enviada no corpo do e-mail. */
    $mensagemHTML = 'FORMULARIO PREENCHIDO NO SITE http://WWW.RVSTECNOLOGIA.COM.BR
    Nome: ‘.$nomeremetente.’
    E-Mail: ‘.$emailremetente.’
    DDD: ‘.$ddd.’
    Telefone: ‘.$telefone.’
    Assunto: ‘.$assunto.’
    Mensagem: ‘.$mensagem.’
    ‘;

    // O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822.
    // O return-path deve ser ser o mesmo e-mail do remetente.
    $headers = “MIME-Version: 1.1\r\n”;
    $headers .= “Content-type: text/html; charset=utf-8\r\n”;
    $headers .= “From: $emailremetente\r\n”; // remetente
    $headers .= “Return-Path: $emaildestinatario \r\n”; // return-path
    $envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);

    if($envio)
    echo “location.href=’index.html'”; // Página que será redirecionada

    ?>

    Responder
  31. Olá Richard.

    Peguei seu formulário e coloquei no meu site, funcionou perfeitamente, mas ainda estou com problema.

    Tenho a pagina de contato ja feita com tudo certinho no site, falta apenas conseguir pegar as informações preenchidas no formulário e enviar para o e-mail que vai receber.

    Na verdade preciso mesclar os códigos e não faço ideia de como fazer isso, pois tudo o que tento da erro.

    Pode me ajudar?

    Responder
  32. Parabéns neste poste consegui achar a solução para o problema de acentuação no E-mail, pois já tinha testado várias dicas e nenhuma funcionou.

    Responder
  33. Cara muito bom o formulario, mas eu vejo a mensagem de email enviado, porem não recebo nada em meu email, pode me ajudar?

    Responder
      • Parabéns pela iniciativa de ajudar quem está começando. Eu estou aprendendo pela “net” gatinhando como posso dizer, estou usando o Hostinger e vi que já tem colegas que usam também. Não consegui fazer um site do zero, mas peguei um exemplo da um local e estou aprendendo sobre ele e assim modificando para mim.
        Enviar para o site já consegui e agora esta funcionando tudo, menos o contato que não envia, mas agora com seu exemplo vou modificar o meu form e retorno se deu certo ou não.

        Responder
      • Richard, consegui adaptar nos meus arquivos e está enviando certinho para meu servidor (Hostinger), acontece que não executa o script de conferencia dos campos, manda até em branco. Depois de enviado ele não abre a tela de informação fica em branco e não volta para tela anterior.

        Responder
        • De uma olha se o caminho dos Javascript’s e dos CSS’s estão corretos

          Responder
  34. Bom Dia Richard,
    Estou tendo problemas com o formulário, coloquei tudo certinho e o email não chega no meu email…. e ele da enviado com sucesso

    Responder
  35. Ai cara, obrigado, funcionou muito bem, sem erros.

    Responder
  36. Ainda não tenho E-mail com domínio próprio, porém gostária muito de testar este formulário, ele funciona para quem não tem e-mail com dominio próprio?

    Responder
    • Acredito que não.
      Abs.

      Responder
  37. Parabéns!!! Limpeza de código perfeita mesmo!!

    Responder
  38. Bom dia!
    O formulário esta funcionando perfeitamente. Gostaria de saber como posso incluir um campo com duas opções (Exemplo: Você concorda ,Sim, Não.
    É possível?
    Obrigado.

    Responder
      • brother beleza!?
        muito bom seu formulário!..estou implementando no meu site porém quero mudar o layout inicial que está em ressalto e fundo branco mas não estou conseguindo.
        gostaria de deixá-lo somente em bordas com fundo transparente como quando selecionado. pode me dizer qual o caminho?
        valeu!

        Responder
        • Só precisa ajustar a formatação no arquivo css/estilo.css se não me falha a memória

          Responder
  39. Genial cara, deu muito certo aqui heheh, parabens Richard.

    Responder
  40. Boa tarde!
    Todo código PHP que tento não funciona.
    Estou acreditando que o problema é na tabela HTML.
    Tem como você me ajudar?

    HTML

    Contato.

    Entre em contato conosco sem compromisso para dúvidas de qualquer categoria. Sua mensagem será respondida o mais breve possível por nossos consultores.

    Envie sua mensagem

    Nome *

    E-mail *

    Telefone

    Titulo

    Mensagem *

    PHP

    <?php

    // Passando os dados obtidos pelo formulário para as variáveis abaixo
    $nome = $_POST['nome'];
    $email = trim($_POST['email']);
    $emaildestinatario = 'contato@taticaconsultoria.com.br'; // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web
    $fone = $_POST['fone'];
    $titulo = $_POST['titulo'];
    $mensagem = $_POST['mensagem'];

    /* Montando a mensagem a ser enviada no corpo do e-mail. */
    $mensagemHTML = 'FORMULARIO PREENCHIDO NO SITE http://WWW.TATICACONSULTORIA.COM.BR
    Nome: ‘.$nome.’
    E-Mail: ‘.$email.’
    Telefone: ‘.$telefone.’
    Título: ‘.$titulo.’
    Mensagem: ‘.$mensagem.’
    ‘;

    // O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822.
    // O return-path deve ser ser o mesmo e-mail do remetente.
    $headers = “MIME-Version: 1.1\r\n”;
    $headers .= “Content-type: text/html; charset=utf-8\r\n”;
    $headers .= “From:” .$email.”\r\n”; // remetente
    $headers .= “Return-Path:” .$emaildestinatario. “\r\n”; // return-path
    $envio = mail($emaildestinatario, $titulo, $mensagemHTML, $headers);

    if($envio)
    echo “location.href=’index.html'”; // Página que será redirecionada

    ?>

    Responder
  41. Caro amigo:

    Minha busca tem sido grande nestes dias. Não consigo enviar qualquer email nos inúmeros que tenho feito, mesmo naqueles que estão prontos, apenas modificando-se o meu endereço de email, como é o seu exemplo. Alterei de Gmail para Uol, nos quais tenho dois endereços, mas nada adiantou. Há confirmação do envio mas não chegam à caixa do email. Agradeço pela oportunidade. Bom Natal!

    Responder
    • No UOL agora só é permitido o envio de e-mails utilizando a autenticação via SMTP, de uma olhada nos comentários tem um link para o outro formulário.

      Abs.

      Responder
  42. Tentei muitas vezes tanto com os e-mails que possuo na UOL, são 4, como no Gmail, Usahotmail e Uol. Envio sem sucesso. Agradecido

    Responder
    • No UOL agora só é possivel enviar e-mails com autenticação SMTP, tenho outro post com um formulário utilizando autenticação nos comentários deve ter o link.
      Abs.

      Responder
  43. Muito obrigado foi muito útil bastou trocar o e-mail, depois de passar dias assistindo aulas no youtube, e testando códigos que não funcionaram, tive a felicidade de encontrar seu site.

    Muito sucesso saúde!

    Responder
  44. Richard, para usar o formulário em uma página já existente, quais campos devemos alterar?

    obrigado.

    Responder
    • Olá Vinicius, você quer usar o envia.php em outro form é isso? Se sim basta manter os mesmos valores nos capos “name=”.

      Abs

      Responder
  45. Parabéns Richarddesign, meu site ta na hostinger e não estava conseguindo colocar pra funcionar formulário, seu formulário rodou perfeitamente, obrigado, grande abraço.

    Responder
  46. Funcionou mesmo!

    Responder
  47. Obrigado pelo post! Preciso que me ajude com uma coisa: quero enviar um só email a 50 pessoas mas quero que essas pessoas tenham no início do texto “Olá João”, “Olá Patrícia”, etc. Pode ajudar-me? Valeu, MUITO obrigado!

    Responder
    • Olá João, até poderia mas está um pouco corrido agora não consigo te ajudar, daria um pouco de trabalho. =[

      Responder
  48. Olá Richard!

    Estou criando um site e no meu formulário de contato está “quase” tudo funcionando, apenas não recebo a informação do telefone digitado no formulário, veja como ficou o php:

    <?php
    $nome = $_POST["nome"];
    $email = $_POST["email"];
    $telefone = $_POST["telefone"];
    $assunto = $_POST["assunto"];
    $mensagem = $_POST["mensagem"];
    global $email;
    $data = date("d/m/y"); //pegando a data do envio
    $hora = date("H:i"); //pegando a hora
    $ip = $_SERVER['REMOTE_ADDR']; //pegando ip do cara que enviou

    if($nome != NULL or $mensagem != NULL or $assunto != NULL or $email != NULL or $telefone != NULL) {
    mail ("emsuzanotem@gmail.com", //email para enviar dados
    "$assunto",
    "Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\n\nMensagem: $mensagem",
    "From: $email"
    );
    echo "window.location=’index.html’;alert(‘$nome, sua mensagem foi enviada com sucesso! Estaremos retornando em breve’);”;
    }
    else {
    echo “Mensagem não enviada, por favor preencha corretamente o formulário.”;
    }
    ?>

    ***Você poderia, por gentileza, me passar uma dica para consertar isso?

    Grato!

    Wagner Braz

    Responder
    • Olá Wagner não sou Expert em PHP, não sei o que pode estar acontecendo apenas olhando o código, sem alguém souber por gentileza comente abaixo.

      Abs.

      Responder
    • Na mensagem:, “Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\n\nMensagem: $mensagem”,

      Falta informar a variavel $telefone …

      Responder
  49. Olá Richard, boa tarde
    Muito bom o seu formulário, funcionou perfeitamente e já esta no ar, me da um help por gentileza, como eu faço para o site voltar para a página principal após o envio do formulário? isso após uns 3 segundos para mostrar a mensagem “mensagem enviada com sucesso…” em vez de ficar nessa tela do “sucesso.html”?

    Outra coisa, é muito complicado eu colocar um botão de anexo para que o cliente possa enviar algum documentos e etc? pode me passar esses dois códigos por favor em cima do seu envia.php?

    Muito obrigado pela força

    Fabio

    Responder
    • Um forma simples seria, colocar um redirect na página sucesso, ou usar no final do script um “echo” window.history.back(); algo assim.

      Responder
  50. Oi estou tentando colocar ele no meu local host mas ele me aparece esse erro.

    Warning: mail() [function.mail]: Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:\xampp\htdocs\formulario-envia\envia.php on line 31

    Responder
    • No Local host em alguns casos é necessário fazer algumas configurações no servidor local, mas não como.

      Responder
      • No meu caso dá a mesma mensagem, mas no servidor de hospedagem. Poderia dar uma dica de como resolver?

        Responder
        • Qual mensagem

          Responder
  51. MUITO BOM CARA
    PARABÉNS ÉS O MELHOR
    SIMLES E DIRETO
    SHOW
    SHOW
    MUITO BOM
    E O MELHOR DOS MELHORES … FODAA…….

    Responder
  52. Perfeito parabéns ficou legal muito bom.

    Responder
  53. Olá fiz exatamente o que disse:

    // Passando os dados obtidos pelo formulário para as variáveis abaixo
    $nomeremetente = $_POST[‘nomeremetente’];
    $emailremetente = trim($_POST[‘emailremetente’]);
    $emaildestinatario = ‘familiaiamada@gmail.com’; // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web
    $ddd = $_POST[‘ddd’];
    $telefone = $_POST[‘telefone’];
    $assunto = $_POST[‘assunto’];
    $outros = $_POST[‘outros’];
    $mensagem = $_POST[‘mensagem’];

    apenas substitui o seu email, porem não enviou ! :/ será que pode me ajudar ?

    desde já agradeço pela atenção !

    Responder
    • No caso está utilizando um e-mail externo, nesse formato precisa utilizar um e-mail com o seu domínio.

      Responder
    • Tente o formulário com autenticação.

      Responder
  54. vim agradecer…
    De tudo que pesquisei e tentei, o seu foi o único que consegui “adaptar” os códigos aos meus para funcionar.

    Parabéns!

    Responder
  55. Obg pelo código! Vc sabe me dizer se tem como trocar a página sucesso.html por um alert dizendo “Msg enviada!”?

    Responder
    • Sim, você pode usar assim no envia.php

      echo ““;
      echo ““;

      O history.go é para voltar a página.

      Responder
  56. Mais uma pergunta: os emails estão caindo na caixa de span? porque? 🙁

    Responder
    • Olá Thiago, existem alguns fatores que pode causar isso, não sei dizer ao certo qual poderia ser o seu.

      Responder
  57. show, muito obrigado.

    Responder
  58. Quando aperto em Enviar ao ele abre os codigos PHP no chrome ao invés de aparecer “Sua mensagem foi enviada com sucesso!”, além disso quando vou verificar o e-mail destinatario não recebo nenhum e-mail. Como posso arrumar esse erro? Obrigado

    Responder
    • Olá Alessandro, você está testando localmente? Se sim tente testar ele diretamente no servidor.

      Responder
  59. Tenho esse form que aparentemente está tudo ok, mas o email não chega para mim, o que poderá ser?

    page html:

    function vEmail(email){
    inca =” /:,;”
    if (email ==””){
    return false
    }
    for (i=0;i-1){
    return false
    }
    }
    atPos=email.indexOf(“@”,1)
    if (atPos==-1){
    return false
    }
    if (email.indexOf(“@”,atPos +1)>-1){
    return false
    }
    pPos=email.indexOf(“.”,atPos)
    if (pPos==-1){
    return false
    }
    if (pPos+3>email.length){
    return false
    }
    return true
    }
    function cad(formV){

    if (formV.nome.value==””){
    alert (“Preencha o campo Nome “)
    formV.nome.focus()
    formV.nome.select()
    return false
    }
    if (formV.facebook.value==””){
    alert (“Preencha o campo Facebook”)
    formV.facebook.focus()
    formV.facebook.select()
    return false
    }
    if (formV.telefone.value==””){
    alert (“Preencha o campo Telefone”)
    formV.telefone.focus()
    formV.telefone.select()
    return false
    }
    if (formV.telefone.value.length <= 8) {
    alert("Por favor, digite um telefone de no mínimo 8 dígitos");
    formV.telefone.focus();
    return false;
    }
    if (formV.email.value==""){
    alert ("Preencha o campo Email")
    formV.email.focus()
    formV.email.select()
    return false
    }
    if (!vEmail(formV.email.value)){
    alert ("Endereço de e-mail inválido")
    formV.email.focus()
    formV.email.select()
    return false
    }
    if (formV.foto.value==""){
    alert ("Por favor, anexe a Foto do Casal.")
    formV.foto.focus()
    formV.foto.select()
    return false
    }
    return true
    }

    Nome:

    Perfil do Facebook :

    Telefone:

    E-mail:

    História de Amor:

    Foto do Casal:

    Page php

    <?
    $nome = $_POST["nome"];
    $facebook = $_POST["facebook"];
    $telefone = $_POST["telefone"];
    $email = $_POST["email"];
    $historia = $_POST["historia"];

    if($nome!=""){

    $email_from = "(email do meu servidor)";
    $assunto = "Promocao Mes Namorados";

    $mensagem = "
    Nome: $nome
    E-mail: $email
    Telefone: $telefone
    Facebook: $facebook
    História de Amor: $historia
    ";

    $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

    $fp = fopen($_FILES["foto"]["tmp_name"],"rb");
    $anexo = fread($fp,filesize($_FILES["foto"]["tmp_name"]));
    $anexo = base64_encode($anexo);

    fclose($fp);

    $anexo = chunk_split($anexo);

    $boundary = "XYZ-" . date("dmYis") . "-ZYX";

    $mens = "–$boundary\n";
    $mens .= "Content-Transfer-Encoding: 8bits\n";
    $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n";
    $mens .= "$mensagem\n";
    $mens .= "–$boundary\n";
    $mens .= "Content-Type: ".$arquivo["type"]."\n";
    $mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";
    $mens .= "Content-Transfer-Encoding: base64\n\n";
    $mens .= "$anexo\n";
    $mens .= "–$boundary–\r\n";

    $headers = "MIME-Version: 1.0\n";
    $headers .= "From: \"$nome\" \r\n”;
    $headers .= “Content-type: multipart/mixed; boundary=\”$boundary\”\r\n”;
    $headers .= “$boundary\n”;

    mail($email_from,$assunto,$mens,$headers);
    }

    ?>

    Responder
      • Olá Richard, se possível gostaria que você me ajudasse com um problema no formulário do meu site feito no Adobe muse 2015. Quando faço atualização do site direto pelo muse, no final recebo a seguinte mensagem:

        Resposta inesperada para a consulta PHP. A PHP talvez não esteja configurada corretamente no servidor Web. Entre em contato com o provedor de hospedagem ou administrador do site para saber como configurar o suporte à PHP.

        Poderia me ajudar nesse problema?
        Desde já agradeço.

        Responder
        • Infelizmente não tenho conhecimento sobre isso =/

          Responder
        • Seguinte, um servidor de hospedagem nem sempre deixa a função Mail() do PHP habilitada em qualquer circunstância. Você precisa configurá-la para ser autenticada. Para isso você precisa modificar uma diretriz no arquivo .htaccess que faça essa configuração da função Mail(). Normalmente o próprio painel de controle do seu serviço de hospedagem tem uma opção que gera esse código que você copia e cola no arquivo .htaccess da pasta raiz (caso você possua outro arquivo .htaccess em uma subpasta, e se sua página com o formulário de contato estiver dentro dessa subpasta, é esse arquivo que vai ditar as configurações). De maneira geral, o código fica assim:

          php_flag authmail.debug: Habilita mensagens de erro no sistema. php_value authmail.port: Define a porta que será utilizada para envio ( 587 ). php_value authmail.address: Endereço de email que será utilizado. php_value authmail.account: Usuário de acesso à conta de email. php_value authmail.smtp: Servidor de envio de emails. php_value authmail.password: Senha de acesso à conta de email.

          No meu caso ficou assim:

          php_flag authmail.debug Off php_value authmail.port 587 php_value authmail.address exemplo@padaria.com php_value authmail.smtp_account exemplo=padaria.com php_value authmail.smtp smtp.padaria.com php_value authmail.password ‘senha’

          Procure no próprio painel de controle do seu servidor algo relacionado a isto. Contudo, ainda estou com um problema de, apesar do email ser enviado, no site aparece a mesma mensagem de erro “O servidor não foi encontrado”.

          Responder
        • Olá Richard,

          No meu caso não estou conseguindo fazer o controle de erro, ou seja, os arquivos de script não dem estar sendo chamados, pois consigo enviar uma mensagem com letras no número do telefone, por exemplo. Devo estar colando o código na parte errada. Com relação ao index, tudo que está no eu também devo colocar no head da minha página e o código do formulário em si devo colocar no da minha página?

          Responder
          • Olá Danilo, não entendi muito bem, se precisar pode enviar no meu e-mail para que eu de uma olhada.

  60. adaptei somente o “envia.php”, e aparentemente ele funcionou, mostra a página sucesso mas o e-mail não chega no destinatário, o que pode ser?
    Segue o código.

    <?php

    // Passando os dados obtidos pelo formulário para as variáveis abaixo
    $nome = $_POST['nome'];
    $email = trim($_POST['email']);
    $emaildestinatario = 'comercial@fenixcaldeiras.com.br'; // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web
    //$ddd = $_POST['ddd'];
    //$telefone = $_POST['telefone'];
    $assunto = $_POST['assunto'];
    //$outros = $_POST['outros'];
    $mensagem = $_POST['mensagem'];

    /* Montando a mensagem a ser enviada no corpo do e-mail. */
    $mensagemHTML = 'FORMULARIO PREENCHIDO NO SITE http://WWW.NOMEDOSITE.COM.BR
    Nome: ‘.$nome.’
    E-Mail: ‘.$email.’
    Assunto: ‘.$assunto.’
    Mensagem: ‘.$mensagem.’
    ‘;

    // O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822.
    // O return-path deve ser ser o mesmo e-mail do remetente.
    $headers = “MIME-Version: 1.1\r\n”;
    $headers .= “Content-type: text/html; charset=utf-8\r\n”;
    $headers .= “From: $site@fenixcaldeiras.com.br\r\n”; // remetente
    $headers .= “Return-Path: $site@fenixcaldeiras.com.br \r\n”; // return-path
    $envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);

    if($envio)
    echo “location.href=’sucesso.html'”; // Página que será redirecionada

    ?>

    Responder
  61. PROBLEMAS. TUDO FUNCIONA. MAS, QUANDO TENTO USAR EMAILS COM @YAHOO, @GMAIL OU @HOTMAIL POR EXEMPLO NAO ENVIA. AGORA SE PONHO TESTE@TESTE.COM.BR POR EXEMPLO VAI NORMAL! O Q SERIA?

    Responder
    • Não vi esse problema ainda, mas de qualquer forma esse formulário é apenas para o “dominio” da hospedagem onde ele estiver. Para e-mails externos existe um com autenticação.

      Responder
  62. Olá Richard, muito bom seu trabalho. O único formulário que funciona é o seu.

    Gostaria de saber se o formulário envia as mensagens para um e-mail da:

    hotmail.com

    E como fazer para isso acontecer.
    Muito Obrigado. Seu formulário foi muito bom para mim.

    Responder
    • Esse provavelmente não, mas tem um com autenticação que envia.

      Abs.

      Responder
  63. Bom dia Richard

    Estou tentando utilizar seu formulário, muito bom por sinal, parabéns.
    Porem o sem autenticação informa enviado com sucesso, mas não chega o email.. isto no host da uol.

    Estou testando o formulário com autenticação no Orgfree mas fica parado no SMTP oq pode estar acontecendo poderia me ajudar?

    Grato

    Responder
    • Olá Nilson,
      Alguns servidores já não aceitam mais formulários sem autenticação, referente ao Orgfree, se quiser pode enviar no meu e-mail que dou uma olhada.

      Abs.

      Responder
  64. Olá Richard. Primeiramente obrigado pelo script, de todos que procurei por aí foi o mais limpo e organizado.

    Porém, assim como em outros formulários que testei, não está funcionando. Estou desconfiado que seja algo em relação a minha hospedagem que é no GoDaddy, sabe se precisa de alguma configuração extra para funcionar?

    Veja abaixo como ficou meu php:

    // Passando os dados obtidos pelo formulário para as variáveis abaixo
    $nomeremetente = $_POST[‘nomeremetente’];
    $emailremetente = trim($_POST[‘emailremetente’]);
    $emaildestinatario = ‘plinio.ricca@sopros.com.br’; // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web
    $ddd = $_POST[‘ddd’];
    $telefone = $_POST[‘telefone’];
    $assunto = $_POST[‘assunto’];
    $outros = $_POST[‘outros’];
    $mensagem = $_POST[‘mensagem’];

    /* Montando a mensagem a ser enviada no corpo do e-mail. */
    $mensagemHTML = ‘FORMULARIO PREENCHIDO NO SITE http://WWW.NOMEDOSITE.COM.BR
    Nome: ‘.$nomeremetente.’
    E-Mail: ‘.$emailremetente.’
    DDD: ‘.$ddd.’
    Telefone: ‘.$telefone.’
    Assunto: ‘.$assunto.’
    Mensagem: ‘.$mensagem.’
    ‘;

    // O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822.
    // O return-path deve ser ser o mesmo e-mail do remetente.
    $headers = “MIME-Version: 1.1\r\n”;
    $headers .= “Content-type: text/html; charset=utf-8\r\n”;
    $headers .= “From: $plinio.ricca@sopros.com.br\r\n”; // remetente
    $headers .= “Return-Path: $plinio.ricca@sopros.com.br \r\n”; // return-path
    $envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);

    Agradeço sua atenção!

    Responder
    • Olá, Plinio tente o formulário autenticado, no No Go Daddy ele funciona. Abs

      Responder
  65. Ola Richard, como faço para implantar este formulário no meu site? ele já está pronto, tem como você ou alguem aqui dos comentários fazer um tutorial passo a passo. Obrigado

    Responder
  66. Olá Richard, o formulário é bem bacana parabéns. Entretanto de inicío funcionou bem e tal, mas de uns dias pra cá não está funcionando. Ele avisa que enviou, mas não vejo na minha caixa de email. Uso pra receber num endereço de email de domínio próprio o qual está no gmail. O que pode estar acontecendo?

    Responder
    • Provavelmente o host deve estar pedindo autenticação para o envio dos e-mails, tente utilizar o formulário com autenticação php

      Responder
  67. Oi, primeiramente obrigado pelo seu serviço, ajudou muito!!

    Minha dúvida é: infelizmente quando clico em “enviar” o navegador fica “carregando” pra sempre; nunca é completado o envio. Como eu corrijo isso?

    PS: já postei num horst e tudo mais. o php simplesmente não finaliza o envio da mensagem.

    Responder
    • As vezes que isso acontece por conta do servidor de autenticação, tente utilizar o outro formulário que disponibilizo no blog.

      Responder
  68. Embora eu não estivesse precisando do layout, o código PHP realmente me ajudou.
    Muito obrigado pelo código.

    Responder
  69. Bom dia, agradeço pelo seu script que funcionou corretamente, mas se possível como estou aprendendo PHP, gostaria de pedir uma ajuda nesse form. Ao acrescentar vários checkbox, não estou conseguindo fazer o envio correto pelo envia.php. Somente consegui extrair o último check. Vc poderia informar como poderia ser esse script em php baseado no seu form para auxiliar no aprendizado? Agradeceria muito.

    Responder
  70. Olá, estou mexendo em um site e já havia feito um php, mas olhei no seu pois estava com erros no meu, porém agora estou com outro problema, quando preecho e envio ele fica em uma tela toda branca e o email não é recebido, o que pode ser? pode ser algum problema com o servidor Locaweb tbm?

    Responder
    • Provavelmente não, deve ser erro em algum caminho de arquivo.

      Responder
  71. Sensacional! Usei o script e funciona perfeitamente, estou recomendando o blog para meus amigos!

    Grande abraço.

    Responder