Carregando...

Como fazer um formulário de envio de e-mail em PHP

Postado: 6 de setembro de 2022 Tempo de Leitura: 7 Minutos

Como fazer um formulário de envio de e-mail em PHP

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

4 respostas para “Como fazer um formulário de envio de e-mail em PHP”

  1. você pode procurar alguma hospedagem ou me add que te ajudo 14996752073

  2. Telegra.Ph disse:

    It’s going to be finish of mine day, except before finish
    I am rreading this fantastiic post to increase my know-how.

  3. Loop Nerd disse:

    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…

  4. Darlan disse:

    Tenho que Pagar a hospedagem para usar, o destinatario e o seu email, qual Campo preecho pra cair no meu email.

Deixe um comentário

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

Artigos Relacionados