Enviar um formulário por mail com PHP

Exemplo de como enviar um formulário por correio electrónico através de PHP.

Por Miguel Angel Alvarez - Tradução de JML


Publicado em: 28/9/04
Valorize este artigo:
Para começar, seria muito útil que aprendêssemos a enviar correios eletrônicos com PHP, para o qual já temos um artigo em CriarWeb.

Esquema de funcionamento

Neste caso vamos utilizar a variável $_POST, que deveria conter o formulário, para saber se recebemos ou não dados desde um formulário. Essa variável vamos utiliza-la num enunciado if (!$_POST), que se for positivo (não temos nada em $_POST), significa que não se recebeu nada desde um formulário. Nesse caso, mostro o formulário de contato.

Em caso contrário (quando temos algo em $_POST), quer dizer que estamos a receber dados através de um formulário e nesse caso, recolhemos os dados e compomos o corpo da mensagem.

Vejamos o código da página para criar o formulário , recebe-lo e compor o corpo da mensagem que vai ser enviada. No mesmo código poderemos encontrar também a chamada à função que envia o correio.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
   <title>Envie-nos os seus comentários</title>
</head>

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$_POST){
?>
<form action="envia_form_php.php" method=post>
Nome: <input type=text name="nome" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentários: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
   //Estou a receber o formulário, componho o corpo
   $corpo = "Formulário enviado\n";
   $corpo .= "Nome: " . $_POST["nome"] . "\n";
   $corpo .= "Email: " . $_POST["email"] . "\n";
   $corpo .= "Comentários: " . $_POST["coment"] . "\n";

   //envio o correio...
   mail("admin@seudominio.com","Formulário recebido",$corpo);

   //agradeço pelo envio
    "Obrigado por preencher o formulário. Foi enviado corretamente.";
}
?>
</body>
</html>





Comentários do artigo
Foram enviados 43 comentários ao artigo
29 comentários não revisados
14 comentários revisados:
Por:
27/11/05
mail("admin@seudominio.com","Formulário recebido",$corpo);

//agradeço pelo envio
"Obrigado por preencher o formulário. Foi enviado corretamente.";
}


Miguel Angel Alvarez

na linha de Agradecimento, falta colocar a instrução "echo".

Obrigado pelo artigo,
Bruno Azevedo
Por: Tiago
05/3/06
A página de formulário é exclarecedora, mas o que precisava de saber é o que tem de estar na página em php que recebe os dados deste formulário...
Se puderem esclarecam-me por e'mail.
Obrigado
Por: Fabio
05/9/06
Sou novato, nao sei muita coisa de programacao, tentei colocar o codigo de formulario no corpo do meu site e apareceu os campos e tal, normalmente.
Mas quando eu coloco as informacoes e mando enviar ele da pagina nao encontrada.
To fazendo algo errado? e so colocar esse codigo na pagina que funciona, me da um toque por e-mail por favor.
Obrigado!
Por: Leonardo Gazio
04/11/06
Olá, é realmente esse é um assunto polêmico, enviar e-mail com PHP. Já li vários artigos, baixei vários scripts enfim... Fiz de tudo e não estou conseguindo enviar e-mail em PHP de jeito nenhum, fiz um formulário de cadastro que insere os dados do cliente no MySql, e deveria enviar um e-mail de boas vindas com a senha gerada para o cliente e outro e-mail para o meu hotmail, aliás rsr, envia, mas não chega, se alguém pudesse dar uma luz, eu e muita gente nesse ramoficariamos muito gratos...
Por: Ranzi
15/4/07
Funciona direitinho (colocar o Echo, como dito acima). Só tem de cuidar para o nome do arquivo que se está fazendo seja envia_form_php.php
Por: Artur
04/8/07
Pessoal, não se esqueçam de verificar se o seu servidor aceita a função mail() do php. Geralmente os servidores bloqueiam ou restringem essa função para evitar spam. Se o seu servidor é grátis e você não está conseguindo enviar, verifique se o servidor aceita essa função, mas se você paga um servidor e não está funcionando, ou não está funcionando como deveria, pergunte aos responsáveis sobre essa função

Por: Kleiner
09/3/08
Ola tentei utilizar este codigo e quando ele da pagina inexistente nao sie o que fazer e tambem cade o cofigo do php ára que possamos criar e utlizar e onde devo colocar o echo que dizem ??? qual linha ! Obrigado desde ja agradecido
Por: Gláucio
04/4/08
Olá .... estou com um problema que nem faz parte do código mas sim do mail()

Existe algum sistema de bloqueio para alguns sites ou serviços? Pois nem todos os destinatários recebem. Fiz um para cadastro de newsletter com confirmação por mail mas, para o yahoo por exemplo não chega. Alguém já passou por isso também?!?
Por: igor henrique
14/8/08
Queria saber qual seria esta "action="envia_form_php.php".
Por: junior
18/9/08
por favor muito bom este tutorial, contudo ainda não me ajudou no que eu estou precisando e talvez vc saiba o por que. Meu problema é o seguinte, o meu codigo php esta enviando email normal, contudo não esta executando o css na hora de visualizar no email. O que pode ser?
formulario
Por: housetec
18/3/10
Oi sou novo na area de criação de sites, tenho ja meu formulario porem nao sei como configurar para enviar o que esta no formulário, gostaria de um passo a passo pois sou leigo no assunto.
Queria saber se tenho que configurar no meu servidor (insite)? e como faço se tiver.
Alguem faça um pra mim
Por: tulinhooo
05/4/10
Eu preciso de um formulário pra ajudar no site do meu pai
alguem por favor mande o codigo pro meu email
Agradeço desde já
Indique se for php ou html
por....de imagen de vcs que nem se consegue enviar um comentario
Por: marcoslucifer
25/3/11
sei que não vão responder, ou pior, vão responder com algo do tipo frio e como se nós que acessamos seus sites fossemos algo de tudo ... menos humanos..., enfim, vou tentar mais uma vêz agora com este site www.mxmasters.com.br
obs: esta ai foi minha ultima tentativa...quem sabe vcs desse forum são mais...elegantes e prestativos.

1) sou novo em web,
2) fiz site por um wyswyg (funciona bem)
3) dentro da pasta a mim conferida (dentro do dominio tem estas pastas:)
- aspnet_client
- paineldemail
- webmail
4) colocar um form. dentro da pagina de contato, será fácil pelas explicações que deram aqui
5) problema: como depois eu faço para meu cliente ler esses emails que lhe foram enviados pela pagina de contato?
6) pagina inicial é index.html, e emails é contato.html
7) na pasta webmail tem este arquivo(index.asp)
"<%
dim dominio, confere
dominio = Request.ServerVariables("HTTP_HOST")
confere = Request.ServerVariables("HTTP_HOST")
confere=Mid(dominio,1,4)
if confere = "www." then

inicio=instr(dominio,".")
dominio=Mid(dominio,inicio+1)

end if
response.Redirect("http://mail."& dominio &":2082")
%>
"
9) enfim, eu penso que no meu contato.html será direcionado para esta pasta ai, mas onde e como meu cliente vai acessar esses emails? e o BD quasl devo utilizar ou esse ai acima já é um tipo de BD texto?

bom, como eu disse, vcs são a 43a. empresa que envio isso, mas eu nunca desisto, um luciferiano que desiste de encontrar respostas e quem sejam os donos dessa resposta...enm deveria ter nascido.

paix et lucis prosperitás
Muito bom!!!!!!
Por: linkinconnect
27/4/11
Quando criarem o arquivo para envio coloquem o nome de "envia_form_php.php"

E substituam a linha:

"Obrigado por preencher o formulário. Foi enviado corretamente.";

Por esta:

echo("Obrigado por preencher o formulário. Foi enviado corretamente.");

Funciona perfeitamente!!!!

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato