- Página Inicial
- Códigos CSS Prontos
- Como fazer um formulário de envio de e-mail em PHP
- Voltar
Como fazer um formulário de envio de e-mail em PHP
Este tutorial mostra como criar um formulário de contato com HTML e Css e enviar os dados com php.
Nesta seção, projetaremos uma estrutura simples na tag <form>.
temos dentro da tag <form> as tags <input>, <textarea> e <button>. Essas tags usaremos para criar o nosso formulário de envio de email com php.
Como criar um formulário em HTML e PHP?
Segui o passo a passo abaixo.
Vamos Adicionar o HTML
<form class="formulario" method="post" action="enviaEmail.php"> <h1 class="title"><i class="icon icon-mail-1"></i> Fale Conosco</h1> <label class="label"> <span>Nome</span> <input type="text" name="nome" class="campo" placeholder="Digite seu nome" required=""/> </label> <label class="label"> <span>E-mail</span> <input type="email" name="email" class="campo" placeholder="Digite seu e-mail" required=""/> </label> <label class="label"> <span>Assunto</span> <input type="text" name="assunto" class="campo" placeholder="Digite um assunto" required=""/> </label> <label class="naoexibir"> <span>Não preencher:</span><br> <input type="text" name="url" value=""></p> </label> <label class="label"> <span>Mensagem</span> <textarea name="mensagem" class="campo" placeholder="Deixe sua mensagem" required=""></textarea> </label> <label class="label"> <input type="hidden" name="acao" value="enviar"> <button type="submit" class="botao"> Enviar </button> </label> </form>
Vamos Adicionar o CSS
Nesta seção, usaremos algumas propriedades CSS para projetar o nosso Formulario
.
.formulario { max-width: 480px; overflow: hidden ; margin: 50px auto; background: #fff; box-shadow: 1px 0px 1.2px 0px #e3e3e3; border-radius: 3px; padding: 1em; } .formulario .title { width: 100%; float:left; margin-bottom:1em; font-size:1.5em; font-weight: 300; text-align: center; border-bottom: 1px #eceaea solid; padding-bottom: 1em; color: #8db57f; } .formulario .label { width:100%; float:left; margin-bottom:10px; } .formulario .label span { width: 100%; float: left; color: #393838; margin-bottom: 3px; } .formulario .campo { color: #393838; font-family: 'open_sansregular'; font-size: 16px; border-radius: 3px; line-height: 20px; background-color: transparent; border: 2px solid #D2D2D2; transition: all 0.3s; padding: 11px; width: 100%; box-sizing: border-box; outline: 0; } .formulario .campo:focus { border: 2px solid #B3D9A5; color: #72A65F; } .formulario textarea { height: 130px; line-height: 130%; resize:vertical; } .formulario .botao { font-family: 'open_sansregular'; width: 100%; background:#8DB57F; color: #ffffff; border-radius:5px; border:0; cursor:pointer; font-size:22px; padding-top:10px; padding-bottom:10px; transition: all 0.3s; margin-top:-4px; font-weight:700; } .formulario .botao:hover { background:#669954; } /*ANTI-SPAN*/ .naoexibir { display:none; }
Vamos Adicionar o PHP
Nesta seção, usaremos o arquivo enviaEmail.php para pegar os campos digitado no formulário e enviar para o arquivo php. Depois, você pode inserir novos campos, dependendo da sua necessidade.
O arquivo acima ao ser chamado vai apresentar o formulário HTML, ao clicar no botão de enviar vai chamar o enviaEmail.php
Vamos adicionar o Script PHP completo
<style type="text/css"> body { background: #ffffff; } </style> <?php if(isset($_POST['url']) && strlen($_POST['url']) == '0' ) { if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){ $nome = $_POST['nome']; $email = $_POST['email']; $assunto = $_POST['assunto']; $mensagem = $_POST['mensagem']; $formulario = "Mensagem do Formulário de Contato - Seu site"; $data = date('d/m/Y H:i'); if($nome == '' || $email == '' || $assunto == '' || $mensagem == ''){ echo '<script>alert("Por favor, Preencha todos os campos corretamente !");location.href="index.html"</script>'; }else{ require_once("phpmailer/class.phpmailer.php"); // Inicia a classe PHPMailer $mail = new PHPMailer(); $mail->CharSet = "UTF-8"; // Define os dados do servidor e tipo de conexão $mail->IsSMTP(); // Define que a mensagem será SMTP $mail->Host = "smtp.site.com.br"; // Endereço do servidor SMTP $mail->SMTPAuth = true; $mail->Port = '587'; $mail->Username = 'webmaster@seusite.com.br'; // Usuário do servidor SMTP $mail->Password = 'senha123456'; // Senha do servidor SMTP // Define o remetente $mail->From = $_POST['email']; // Seu e-mail $mail->FromName = $_POST['nome']; // Seu nome $mail->Sender = 'contato@seusite.com.br'; // Define os destinatário(s) $mail->AddAddress('contato@seusite.com.br'); //$mail->AddCC('atendimento@seusite.com.br', 'Ciclano'); // Copia //$mail->AddBCC('fulano@seusite.com.br.com.br', 'Fulano da Silva'); // Cópia Oculta // Define os dados técnicos da Mensagem $mail->IsHTML(true); // Define que o e-mail será enviado como HTML //$mail->CharSet = 'iso-8859-1'; // Charset da mensagem (opcional) // Define a mensagem (Texto e Assunto) $mail->Subject = $formulario; // Assunto da mensagem $mail->Body = ' <div style="border: 1px solid #f0f0f0; background:#ffffff; font-size:1em; color:#454545; margin:0px auto; padding:1em; overflow:hidden;"> <p style="width:100%; float:left; margin-bottom:2px; color:#3c2754; font-size:1.6em;"> '.$formulario.'</p> <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#3c2754;">Nome:</strong> '.$nome.' </p> <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#3c2754;">E-mail:</strong> '.$email.' </p> <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#3c2754;">Telefone:</strong> '.$telefone.' </p> <p style="width:100%; float:left; margin-bottom:0px; font-size:1.2em;"> <strong style="color:#3c2754;">Mensagem:</strong> '.$mensagem.' </p> <p style="width:100%; float:left; margin-bottom:2px; color:#3c2754; font-size:1.2em; border-top:1px #e9e9e9 solid; padding-top:5px;"> <strong>Enviado pelo site:</strong> www.seusite.com.br <br><br> <strong>Data de envio:</strong> '.$data.' </p> </div> '; $mail->AltBody = " \r\n :)"; // Define os anexos (opcional) //$mail->AddAttachment("c:/temp/documento.pdf", "novo_nome.pdf"); // Insere um anexo // Envia o e-mail $enviado = $mail->Send(); // Limpa os destinatários e os anexos $mail->ClearAllRecipients(); $mail->ClearAttachments(); // Exibe uma mensagem de resultado if ($enviado) { echo ' <div style="max-width:320px; padding:50px; border:3px solid #3c2754; color:#3c2754; font-family: tahoma; background:#f7f7f7; text-align:center; font-weight:800; margin:180px auto;"> <p style="font-size:1.3em;">Obrigado!</p> <p style="font-size:1.1em;"> Mensagem enviada com sucesso !</p> </div> '; echo '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.html">'; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $mail->ErrorInfo; } }//If Verifica Campos em Brancos }//Fecha Condição se alguém Clicar no botão }//Fecha verifica se é url vazia ?>
Explicando o script php
Exemplo regra básica. fique atendo aos campos name=”nome do campo”, ou seja os campos que temos no formulário tem que ser o mesmo no arquivo php ok ?
veja o exemplo abaixo no formulário html
no formulário html temos quatro campos para preencher.
nome, email, assunto e mensagem.
<input type="text" name="nome" class="campo" placeholder="Digite seu nome" required=""/> <input type="text" name="email" class="campo" placeholder="Digite seu email" required=""/> <input type="text" name="assunto" class="campo" placeholder="Digite o Assunto" required=""/> <textarea name="mensagem" class="campo" placeholder="Deixe sua mensagem" required=""></textarea>
No arquivo PHP também temos que ter quatro campos com o mesmo nome no input name=””.
Ou seja as variáveis tem que ter o mesmo nome.
$nome, $email, $assunto e $mensagem.
veja o exemplo abaixo no arquivo enviaEmail.php
$nome = $_POST['nome']; $email = $_POST['email']; $assunto = $_POST['assunto']; $mensagem = $_POST['mensagem'];
Agora veja se você quiser inserir MAIS UM CAMPO com nome de TELEFONE.
Novo campo TELEFONE html
<input type="text" name="nome" class="campo" placeholder="Digite seu nome" required=""/> <input type="text" name="email" class="campo" placeholder="Digite seu email" required=""/> <input type="text" name="telefone" class="campo" placeholder="Digite seu Telefone" required=""/> <input type="text" name="assunto" class="campo" placeholder="Digite o Assunto" required=""/> <textarea name="mensagem" class="campo" placeholder="Deixe sua mensagem" required=""></textarea>
Novo campo TELEFONE no arquivo php
$nome = $_POST['nome']; $email = $_POST['email']; $telefone = $_POST['telefone']; $assunto = $_POST['assunto']; $mensagem = $_POST['mensagem'];
Nesta linha de condição if e else para verificar se os campos estão vazios também você vai ter que inserir o NOVO CAMPO TELEFONE.
veja o exemplo a seguir
if($nome == '' || $email == '' || $telefone == '' || $assunto == '' || $mensagem == ''){ echo '<script>alert("Por favor, Preencha todos os campos corretamente !");location.href="index.html"</script>'; }else{
Além disso você também que inserir na mensagem de TEXTO e ASSUNTO que vai aparecer dentro do email
Define a mensagem (Texto e Assunto)
// Define a mensagem (Texto e Assunto) $mail->Subject = $formulario; // Assunto da mensagem $mail->Body = ' <div style="border: 1px solid #f0f0f0; background:#ffffff; font-size:1em; color:#454545; margin:0px auto; padding:1em; overflow:hidden;"> <p style="width:100%; float:left; margin-bottom:2px; color:#3c2754; font-size:1.6em;"> '.$formulario.'</p> <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#3c2754;">Nome:</strong> '.$nome.' </p> <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#3c2754;">E-mail:</strong> '.$email.' </p> <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#3c2754;">Assunto:</strong> '.$assunto.' </p> <p style="width:100%; float:left; margin-bottom:0px; font-size:1.2em;"> <strong style="color:#3c2754;">Mensagem:</strong> '.$mensagem.' </p> <p style="width:100%; float:left; margin-bottom:2px; color:#3c2754; font-size:1.2em; border-top:1px #e9e9e9 solid; padding-top:5px;"> <strong>Enviado pelo site:</strong> www.seusite.com.br <br><br> <strong>Data de envio:</strong> '.$data.' </p> </div> ';
Define os dados do servidor e tipo de conexão
fique tranquilo esta parte você pode consultar a sua hospedagem para saber qual as configurações.
A pergunta é com quem você esta hospedado:
1. Rapid Cloud
2. KingHost
3. HostGator
4. Locaweb
5. Hostnet
NOTA: Na verdade nem precisa pesquisar. assim que você criar um email: webmaster@seusite.com.br
sua caixa de e-mail webmaster vai ter as configurações como porta e smpt passo a passo.
$mail->IsSMTP(); // Define que a mensagem será SMTP $mail->Host = "smtp.site.com.br"; // Endereço do servidor SMTP $mail->SMTPAuth = true; $mail->Port = '587'; $mail->Username = 'webmaster@seusite.com.br'; // Usuário do servidor SMTP $mail->Password = 'senha123456'; // Senha do servidor SMTP // Define o remetente $mail->From = $_POST['email']; // Seu e-mail $mail->FromName = $_POST['nome']; // Seu nome $mail->Sender = 'contato@seusite.com.br'; // Define os destinatário(s) $mail->AddAddress('contato@seusite.com.br');
Importante!
você vai ter que botar o smtp
$mail->Host = "smtp.site.com.br"; // Endereço do servidor SMTP
Porta
$mail->Port = '587';
E o e-mail de autenticação
crie um e-mail chamado webmaster@nomedoseusite.com.br
e crie uma senha. veja o exemplo abaixo.
$mail->Username = 'webmaster@loopnerd.com.br'; // Usuário do servidor SMTP $mail->Password = 'senha123456'; // Senha do servidor SMTP
Define os destinatário
ou seja vai enviar para onde contato
// Define o remetente $mail->From = $_POST['email']; // Seu e-mail $mail->FromName = $_POST['nome']; // Seu nome $mail->Sender = 'contato@seusite.com.br'; // Define os destinatário(s) $mail->AddAddress('contato@seusite.com.br');
posso enviar para outro email como: Gmail, hotmail, yahoo etc…
SIM pode veja.
// Define o remetente $mail->From = $_POST['email']; // Seu e-mail $mail->FromName = $_POST['nome']; // Seu nome $mail->Sender = 'contato@seusite.com.br'; // Define os destinatário(s) $mail->AddAddress('loopnerd@gmail.com');
PHPMailer: Criando um formulário em PHP autenticado
Porque devo utilizar um formulário em PHPMailer?
Um formulário de contato em seu site facilita a comunicação de seus clientes e pessoas que têm interesse em seu negócio. No caso do PHPMailer, o envio é feito de forma autenticada.
Isto é, você utiliza o servidor SMTP do seu domínio para enviar as mensagens. De um modo não autenticado você normalmente faz o envio através do próprio servidor web.
Você pode conferir a documentação completa no endereço https://github.com/PHPMailer/PHPMailer.
Como utilizar essa classe de envio PHPMailer?
a classe de envio PHPMailer esta incluida no arquivo enviaEmail.php, dentro da pasta phpmailer
require_once("phpmailer/class.phpmailer.php");
Para conseguir enviar emails pelo seu site via autenticação SMTP será necessário fazer uso da classe. Portanto, faça o download da versão mais recente pelo link informado acima ou então faça o download da versão
Mensagem de sucesso
se todos as campos forem todos preenchidos vai aparecer uma mensagem de sucesso.
veja no código abaixo.
// Exibe uma mensagem de resultado if ($enviado) { echo ' <div style="max-width:320px; padding:50px; border:3px solid #3c2754; color:#3c2754; font-family: tahoma; background:#f7f7f7; text-align:center; font-weight:800; margin:180px auto;"> <p style="font-size:1.3em;">Obrigado!</p> <p style="font-size:1.1em;"> Mensagem enviada com sucesso !</p> </div> '; echo '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.html">'; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $mail->ErrorInfo; }
Reparem que ele dá um echo e volta para index.html
echo '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.html">';
em outros casos você também pode voltar para contato.html
echo '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=contato.html">';
ou seja se os campos forem todos preenchidos com sucesso, você também pode redirecionar para uma página de Obrigado com design BONITO estilizado com CSS.
veja o exemplo abaixo.
// Exibe uma mensagem de resultado if ($enviado) { echo '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=obrigado.html">'; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $mail->ErrorInfo; }
Caso você tenha dificuldades de como fazer um formulário de envio de e-mail em PHP
Deixe um comentário abaixo para eu te ajudar.
Combinando as Três seções acima Html, Css e PHP temos o seguinte Resultado !
Veja o Resultado baixo
Baixar Código Veja Funcionando
Publicado por: Loop Nerd
2.910 Visualizações
você pode procurar alguma hospedagem ou me add que te ajudo 14996752073
It’s going to be finish of mine day, except before finish
I am rreading this fantastiic post to increase my know-how.
Olá Darlan!
Sim este formulário é para quem tem hospedagem própria.
exemplo vamos supor que seu site seja:
www.seusitedarlan.com.br
,ai você vai criar um e-mail
webmaster@seusitedarlan.com.br
e botar a senha que você criar.ai sim, você pode enviar para outro emails como: Gmail, hotmail, yahoo etc…
Tenho que Pagar a hospedagem para usar, o destinatario e o seu email, qual Campo preecho pra cair no meu email.