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 23 comentários ao artigo
12 comentários não revisados
11 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.

Usuários :    login / registro
Manuais relacionados
Categorias relacionadas
O autor

Buscar projetos:

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