Formulário para envio de email em PHP

Essa dica é mais útil para quem tem sites do que para os blogueiros, por que é um formulário que envia email feito em duas partes, um arquivo HTML e outro php. Você só precisa criar os dois arquivos e salvar na mesma pasta onde hospeda seu site e pronto.

Primeiro salve o código abaixo com o nome contato.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
.form_botao {
background-color: #CCCCCC;
font: 15px Verdana;
border: 1px solid #0000FF;
margin: 3px;
}
.form_campos {
background-color: #FFFFFF;
font: 15px Verdana;
border: 2px solid #000066;
}
td {
padding-top: 5px;
padding-bottom: 5px;
padding-left: 3px;
}
.style1 {
font-size: 18pt;
font-family: "Comic Sans MS";
letter-spacing: 2px;
word-spacing: 5px;
}
-->
</style>
</head>
<body>
<form action="falar.php" method="post" name="formulario" id="formulario">
<div align="left">
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>
<td colspan="2" align="center" scope="col"><span class="style1">Fale Conosco</span></td>
</tr>
<tr>
<td align="right" scope="col">Nome</td>
<td scope="col"><input class="form_campos" type="text" name="nome" size="34" /></td>
</tr>
<tr>
<td align="right" scope="col">E-mail</td>
<td scope="col"><input class="form_campos" type="text" name="e-mail" size="34" /></td>
</tr>
<tr>
<td align="right" scope="col">Site/Blog</td>
<td scope="col"><input class="form_campos" type="text" name="endereco" size="34" id="endereco" /></td>
</tr>
<tr>
<td align="right" scope="col">Assunto</td>
<td scope="col"><input class="form_campos" type="text" name="assunto" size="34" id="assunto" /></td>
</tr>
<tr>
<td align="right" scope="col">Mensagem</td>
<td scope="col"><textarea class="form_campos" name="mensagem" cols="34" rows="4"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center" scope="col"><input class="form_botao" type="submit" name="Enviar" value="Enviar " />
<input class="form_botao" type="reset" name="Limpar" value="Limpar" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>


Depois com esse outro trecho crie um arquivo com o nome falar.php e salve na mesma pasta onde está o contato.html

<?
$hoje_tmp = getdate();
$hoje = ($hoje_tmp[hours].":".$hoje_tmp[minutes].":".$hoje_tmp[seconds]);
$nome = $_POST["nome"]; //trata a variável nome
$endereco = $_POST["endereco"]; //trata a variável estado
$email = $_POST["e-mail"]; //trata a variável e-mail
$assunto = $_POST["assunto"]; //trata a variável assunto
$mensagem = $_POST["mensagem"]; //trata a variável mensagem
global $email; //transforma em variavel global a variável e-mail
$enviou = mail("dicasparablogs@gmail.com", // aqui voce coloca o seu e-mail
"$assunto",
"Nome: $nome
Endereco: $endereco
E-mail: $email
Assunto: $assunto
Mensagem: $mensagem",
"From: $email <$nome>");
if ($enviou){
header('location:http://www.acessoriosparablogs.com.br/sucessomail.html');
}
else {
header('location:http://www.acessoriosparablogs.com.br/erromail.html');
}
?>

Note que tem uma linha onde está o nosso email:
$enviou = mail("dicasparablogs@gmail.com", // aqui você coloca o seu e-mail, então troque para o endereço de email que você desejar.

Outra coisa é no final do código tem:
if ($enviou){
header('location:http://www.acessoriosparablogs.com.br/sucessomail.html');
}
else {
header('location:http://www.acessoriosparablogs.com.br/erromail.html');
}
?>

Isso são as paginas para as quais o site será redirecionado em caso de sucesso ou erro no envio do email, então altere os endereços. Agora que já criou os dois arquivos só precisa fazer upload dos arquivos, mas tenha os dois precisam estar na mesma pasta no servidor onde você tem seu site.

Outra coisa importante é que nem sempre esses formulários funcionam em hospedagens grátis, já ouvi varias queixas sobre isto, mas o problema não está nos códigos, mas na disponibilidade de serviço do local onde você hospeda seu site.

Copiamos e modificamos esses códigos a partir da pagina de ajuda do UolHost e estamos usando em nosso novo site Acessórios para Blogs, mas esse site ainda está no inicio e falta muita coisa a fazer nele, portanto pedimos a compreensão de quem visitar nosso novo site quando ao pouco conteúdo e alguma possível falha nos links ou qualquer outra coisa.

Veja também:
Enviar atualizações do seu blog por email
Formulários de contato prontos

57 comentários:

  1. Finalmente, não estava achando essa dica em nenhum lugar,
    Muito obrigado

    ResponderExcluir
  2. como faço para por isso no meu blog???

    responde-me Fabiano

    ResponderExcluir
  3. Ótima dica realmente. Assim, nunca mechi diretamente com PHP mas acho simples. Acredito que em servidores gratuítos o resultado não seria tão lamentoso assim, depende onde seria hospedado, acho que vou analisar mais o assunto e dependendo como for, fazer uma postagem relacionada. Este post me inspirou.

    ResponderExcluir
  4. Feliz dia do amigo! Tem um selinho para vc. abraços.

    ResponderExcluir
  5. eL n!ñOo= || »Manel Veloso«
    essa dica é para pessoas que tem sites, em blogs não é possivel pois precisa hospedar um arquivo php.

    mas neste link tem alguns sites que fazem formularios de contato para blogs
    http://www.dicasparablogs.com.br/2009/03/enviar-atualizacoes-por-email.html

    ResponderExcluir
  6. Arruma Blog
    tentei duas vezes em hospedagem grátis e não deu certo, mas isso já faz tempo, acho que as coisas melhoraram um pouco deste então..

    ResponderExcluir
  7. Fabiano, mas eu recentemente passei por um blog, que por acaso deixou um comentário no seu blog, no blog dele eu encontrei como eu queria em meu blog, mas não sei como aplicar em meu blog, por favor dê uma vista de olhos, aqui fica o link - http://superwoofersul.blogspot.com/2008/07/contato.html

    ResponderExcluir
  8. eL n!ñOo= || »Manel Veloso«
    o formulário que esse blog usa é do site www.formulariopro.pog.com.br, é só ir lá e conseguirá um para colocar no seu blog.

    ResponderExcluir
  9. Um exmplo que o blogger não hospeda php se você acessar http://www.dicasparablogs.com.br/index.php percebera que não existe mais se acessar http://www.dicasparablogs.com.br/index.html aparecera no início para hospedar php eu utilizo hospedagens gratuitas no http://www.000webhost.com/ faça seu cadastro e podera hospedar em php acesse meusite.darkila.com e veja o exemplo

    ResponderExcluir
  10. concordo, fazer um cadastro num site de hospedagem grátis é o melhor jeito para ter paginas extras para blog e usar esse formulario

    ResponderExcluir
  11. tem como fazer um formulário desses com arquivo de upload?

    ResponderExcluir
  12. aqui tem um tutorial sobre como fazer formulario com upload
    http://www.criarweb.com/artigos/171.php

    achei varias explicações no google pesquisando por formulario php upload, essa é apenas uma delas, então se quiser certamente encontrará outras, e talvez até algum jeito melhor de fazer isso.

    ResponderExcluir
  13. Já to virando fã do seu blog :]

    Só gostaria de saber se vc consegue arrumar um desse tipo

    http://www.nintendoblast.com.br/2009/03/nova-postagem.html


    Obrigado :]

    ResponderExcluir
  14. acho que o sistema é parecido com o formulario desta postagem, mas claro usou varios outros recursos para dar a formatação, mas certamente precisa ter um site hospedado não dá pra fazer diretamente pelo blog, além disso acredito que vá para o email dele e não diretamente para o blog

    ResponderExcluir
  15. Existe uma maneira mais fácil que essa, pelo menos no meu blog não tive esse trabalho de mexer com HTML :)

    ResponderExcluir
  16. Anônimo, no final da postagem tem um link para formulario de contato prontos, é mais fácil usar um deles no blog

    ResponderExcluir
  17. Realmente existe vários, mas para mim o melhor de usar é o Wufoo.
    Além de ser prático não toma muito o tempo do Blogueiro.

    ResponderExcluir
  18. Fabiano, você poderia me explicar como personalizar a pagina de comentários?

    Igual a sua, ou parecida.

    ResponderExcluir
  19. não está funcionando, estou utilizando o servidor awardspace.com e hospedei o site www.linkla.co.cc, da-me ai uma referencia

    ResponderExcluir
  20. Webvision
    uso esse formulario em nossa pagina de contato, veja no link em nosso menu no inicio do blog, talvez onde hospedou o site não tenha suporte para isso.

    ResponderExcluir
  21. ta certo vou tentar hospedar no 000webhost.com

    ResponderExcluir
  22. Boa tarde

    Esse formuario esta perfeito para colocar em meu website...
    só que esta havendo um erro e nao sei como corrigir...
    Nos arquivos falar.html , esta dando erro line 11 ::
    Parse error: syntax error, unexpected '"' in /home/sedaflor/public_html/falar.php on line 11

    alguem poderia me ajudar por gentileza

    Grata

    ResponderExcluir
  23. Mari, tente ver o link para o formulario original na pagina do uolhost

    ResponderExcluir
  24. olá! sou uma amadora completa com html, criei um site pelo frontpage, e consegui publica-lo, mas o site de hospedágem nãoa ceita o formulário de frontpage, então segui todos os passos que tu colocou, mas quando eu tento preenchar no meu site e clico em enviar dá a seguinte mensagem:
    Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\vhosts\arketing.com.br\httpdocs\falar.php:8) in C:\Inetpub\vhosts\arketing.com.br\httpdocs\falar.php on line 26

    Não entendi...
    Obrigada...
    Juliana

    ResponderExcluir
  25. Juliana, quando o assunto é PHP eu sei muito pouco, sugiro que procure sites especializados no assunto.

    quando fiz e testei esse formulario funcionou normalmente, alias ainda uso como contato para esse blog

    ResponderExcluir
  26. Realmente as vezes da vontade de deletar tudo,mas ainda bem que existem lugares como esse para nos ajudar.Obrigado.

    ResponderExcluir
  27. era isso que eu estava procurando para colocar no meu blog ja fiz o teste no meu blog de teste e deu certinho valeu

    ResponderExcluir
  28. opa....eu queria saber o seguinte:

    eu fiz isso...mas tem um problema, não quero que redirecione para http://www.acessoriosparablogs.com.br/sucessomail.html e o error....nem pra outra q eu irei hospedar, eu qria q redirecionace pra mesma pasta...p/ eu fazer isso eu tentei retirar o

    "http://www.acessoriosparablogs.com.br/"

    e somente deixar o resto...é que o q qro fazer é hospedar em um servidor com suporte a PHP e colocar como frame no meu blog...o q eu faço?

    ResponderExcluir
  29. adaptamos esse código a partir de um publicado na pagina de ajuda do uolhost(veja o link no final de nossa postagem), lá tem como fazer só aparecer uma mensagem, ou então pode colocar a url da pagina que gostaria que redirecionasse.

    ResponderExcluir
  30. e ai...eu entendi, só falta uma coisa, nesse trecho:

    $remetente = "email@seudominio"; // INSIRA AQUI UM EMAIL CRIADO EM SUA HOSPEDAGEM PARA QUE A MENSAGEM SEJA ENVIADA CORRETAMENTE.


    Como Assim o e-mail criado em sua hospedagem???ja tem o do destinatário... e outra coisa:

    eu posso apagar esses trechos tipo esse:

    "INSIRA AQUI UM EMAIL CRIADO EM SUA HOSPEDAGEM PARA QUE A MENSAGEM SEJA ENVIADA CORRETAMENTE." ou eh para mudar para algo, devo tirar a // ??

    ResponderExcluir
  31. neste trecho só precisa colocar o seu endereço de email.

    o código que vem depois das duas barras // é só um comentário de quem escreveu o código, esse trecho não influencia em nada.

    ResponderExcluir
  32. O código acima NÃO pega no editor do blogger! não gostei!!!!!!!

    ResponderExcluir
  33. esse código é feito para sites, precisa de hospedagem de PHP, realmente não é para o blogger, pelo menos não diretamente nele

    ResponderExcluir
  34. nao funcionou aqui!
    aparec isso
    "); if ($enviou){ header('location:http://www.acessoriosparablogs.com.br/erromail.html'); } else { header('location:http://www.acessoriosparablogs.com.br/erromail.html'); } ?>
    pode me dizer o que tem de errado?

    ResponderExcluir
  35. talvez foi um erro ao copiar e colar o código

    ResponderExcluir
  36. Olá Srs. No meu esta dando este erro:

    Parse error: syntax error, unexpected ',' in /home/freehost/t35.com/v/i/viver/falar.php on line 16

    Na realidade não sei como arrumar vcs podem me ajduar?

    ResponderExcluir
  37. não sei como corrigir esse erro do seu site, procure sites sobre php certamente eles podem falar melhor do assunto.

    ResponderExcluir
  38. MUITO OBRIGADO!!!! FUNCIONOU
    DEU CERTO GALERA...PODEM CONFIAR...VALEU!!!

    ResponderExcluir
  39. não consigo fazer como faz me manda uma mensagem por favor como fazer

    ResponderExcluir
  40. esse tutorial não funciona diretamente no blogger, você precisa hospedar um site para fazer um formulario php

    ResponderExcluir
  41. Oi amigo,
    Chequei todo o código e ñao há diferenças do da postagem.

    criei os dois arquivos (O HTML, e o PHP para a execução).

    Porem quendo clico em enviar retorna para min uma pagina em branco escrito o final do PHP:("); if ($enviou){ header('location:http://www.acessoriosparablogs.com.br/sucessomail.html'); } else { header('location:http://www.acessoriosparablogs.com.br/erromail.html'); })

    Ajuds, plix XD

    Flow

    ResponderExcluir
  42. lamento mas não posso ajudar nisso, meus conhecimentos de PHP são poucos e não sei resolver erros neste tipo de código....

    tente pesquisar por sites com tutoriais sobre php, certamente encontrará muitos

    ResponderExcluir
  43. Quanto clico em enviar abre uma página com o erro:
    Warning: Cannot modify header information - headers already sent by (output started at /home1/doffhost/public_html/david/falar.php:9) in /home1/doffhost/public_html/david/falar.php on line 30

    Eu mudei as linhas do código para ficar assim:
    "From: $email <$nome>");
    if ($enviou){
    header('location:confirm.html');
    }
    else {
    header('location:notConfirm.html');
    }

    Porque será que dá esse erro?

    ResponderExcluir
  44. meus conhecimentos de php são bem limitados... tente procurar algum site especializado no assunto..

    mas concordo com você parece certo, mas tente colocar o endereço completo da pagina por exemplo:
    http://seusite.com.br/confirm.html

    ResponderExcluir
  45. Excelente dica!
    Valeu!

    ResponderExcluir
  46. Eu queria fazer uma coisa no meu blog, criar um widget, como o minilua fez, observe o exemplo: http://static.minilua.com/live/banners/top728.html ele criou esta página e fez um widget, e os outros blogs colocam este widget no blog dele, por aqui: http://minilua.com/live/banners/#ref=http://blogattao.blogspot.com/
    eu queria saber, se pra fazer isso eu presciso colocar meu blog em PHP. ouvi falar que tem que fazer isso, vc sabe se tem ou não? vc sabe fazer um widget como o do minilua? flw, obrigado

    ResponderExcluir
  47. esse tipo de gadget é bem complicado de criar ... e precisa saber sobre programação... não tem como fazer diretamente no blogger

    ResponderExcluir
  48. Finalmente um q funciona,
    cara passei horas porcurando 1 q prestase,
    seu codigo e bem limpo e facil de entender. parabens mesmo.
    agora, se vc souber como eu posso colocar um anexo nesse contato e poder me dar um toque, me mande por email charlesmanzoli@gmail.com
    abraçãoe sucesso

    ResponderExcluir
  49. Gostei do POST, Parabéns!

    ResponderExcluir
  50. Dureza, não consigo fazer os botoes funcionarem... não dá nenhum erro mas também não envia...

    ResponderExcluir
  51. infelizmente depois de algumas atualizações de navegadores e sistemas alguns códigos param de funcionar

    ResponderExcluir
  52. Estou com um problema, o script estava funcionando perfeitamente no Gmail mas quando eu troco o email e coloco hotmail ele não envia !

    ResponderExcluir
  53. infelizmente não entendo de PHP para corrigir esses erros, mas achei que iria funcionar com qualquer email

    tente procurar algum site especializado em PHP ou usar um formulario de contato pronto

    ResponderExcluir
  54. UMAS DAS DICAS MAIS BOAS DESSE BLOG !

    ResponderExcluir
  55. Aqui funcionou perfeitamente, realmente ficou muito bom, obrigado.
    Não é SPAM, apenas estou mostrando uma nova ferramenta que talvez vocês possam usar para divulgar algo ou agregar um grupo com as mesmas idéias.
    Embora ninguém possa voltar atrás e fazer um novo começo, qualquer um pode começar agora e fazer algo diferente para um novo fim.

    http://www.phaco.com.br/painel

    ResponderExcluir