Carregando...

Formulário de contato com ENVIO de ANEXO em php

Postado: 10 de janeiro de 2023 Tempo de Leitura: 8 Minutos

Formulário de contato com ENVIO de ANEXO em php

Formulário de contato com ENVIO de ANEXO em php

Neste tutorial ensinaremos como criar um formulário PHP para envio de mensagens com ANEXO.

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 fazer formulário com envio de anexo com HTML e PHP ?

Segui o passo a passo abaixo.

Vamos Adicionar o HTML

    <form class="formulario" method="post" enctype="multipart/form-data">

       <h1 class="title"><i class="icon icon-mail-1"></i> Fale Conosco</h1>

       <p>
          Preencha o Formulário e <b>faça um teste</b> para<br> 
          o Loop Nerd com arquivo em <b>Anexo</b>.
        </p>
        
        <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="label">
            <span>Anexar Arquivo</span>
            <input type="file" name="arquivo" id="arquivo" class="campo" 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 Formulário com envio de anexo.

.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: #00abff; 

}

.formulario p { color: #7a8078; font-size: 1em; width: 100%; float: left; margin-bottom: 20px; }


.formulario .label { 
   
  width:100%;
  float:left; 
  margin-bottom:10px;

}

.formulario .label span { 

  width: 100%; 
  float: left;
  color: #00abff;
  margin-bottom: 3px; 

}

.formulario .campo {

  color: #6A6A6A;
  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 #00abff; 
    color: #00abff;
}

.formulario textarea {
  
  height: 130px;
  line-height: 130%;
  resize:vertical;

}

.formulario .botao {

  font-family: 'open_sansregular';
  width: 100%;
  background:#00ABFF;
  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:#808080; }

/*ANTI-SPAN*/
.naoexibir { display:none; }

Vamos adicionar o PHP completo para envio os dados dos campos digitados e mais o anexo.

  <?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'];
        
        $arquivo = $_FILES['arquivo'];
        $arquivonome = $_POST['arquivo'];

        $mensagem     = $_POST['mensagem'];
        $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.php"</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 = "mail.seusite.com.br"; // Endereço do servidor SMTP
        $mail->SMTPAuth = true;
        $mail->Port     = '465'; 
        $mail->Username = 'webmaster@seusite.com.br'; // Usuário do servidor SMTP
        $mail->Password = '123456'; // 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)
        $local          = "Mensagem do Artigo sobre Formulario - Seu site";
        $mail->Subject  = $local; // 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:1px; font-size:1.2em;"> <strong style="color:#00ABFF;">Nome:</strong> '.$nome.' </p>
                              <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#00ABFF;">E-mail:</strong> '.$email.' </p>
                              <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#00ABFF;">Assunto:</strong> '.$assunto.' </p>
                              <p style="width:100%; float:left; margin-bottom:0px; font-size:1.2em;"> <strong style="color:#00ABFF;">Mensagem:</strong> '.$mensagem.' </p>
                              <p style="width:100%; float:left; margin-bottom:2px; color:#00ABFF; 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($arquivo['tmp_name'], $arquivo['name']);
        //$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:30px; border:3px solid #00ABFF; color:#00ABFF; 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:1em;"> Mensagem enviada com sucesso !</p>

                           </div>

                          ';
                  
                    echo    '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php">';

          } 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.

nomeemailassunto, anexo 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=""/>
<input type="file" name="arquivo" id="arquivo" class="campo" required> 
<textarea name="mensagem" class="campo" placeholder="Deixe sua mensagem" required=""></textarea>

No arquivo PHP também temos que ter cinco campos com o mesmo nome no input name=””.

Ou seja as variáveis tem que ter o mesmo nome.

$nome$email$assunto , $arquivo $mensagem.

veja o exemplo dos 5 campos preenchidos no formulario no html enviando para o php.

  $nome         = $_POST['nome'];
  $email        = $_POST['email'];
  $assunto      = $_POST['assunto'];
  
  $arquivo = $_FILES['arquivo'];
  $arquivonome = $_POST['arquivo'];

  $mensagem     = $_POST['mensagem'];

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>
                      
                    ';

Definindo 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.

veja o exemplo abaixo.

Caso você não saiba pesquisa assim:

Como Usar o PHPMailer com o SMTP da Hostinger

ou

PHPMailer: Criando um formulário em PHP autenticado na KingHost

ou seja, varia de hospedagem, você entendeu né.

  $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!

“Se liga ai NERD” 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 uma email chamado webmaster@nomedoseusite.com.br

e crie uma senha. veja o exemplo abaixo.

 $mail->Username = 'webmaster@seusite.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 outros e-mails como: Gmailhotmailyahoo 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');
  $mail->AddAddress('loopnerd@hotmail.com.br');

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.php">';
    } 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.php

echo '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php">';

em outros casos você também pode voltar para outra url é só mudar o refresh url

echo '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=https://www.seusite.com.br/sobre">';

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;
    }

IMPORTANTE!

para enviar o arquivo no campo anexo

Crie uma pagina: contato.php, ou formulario.php

ou seja todo (Script php) e o (formulário html) tem que esta na página.php

Assim veja – > contato.php

                <?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'];
                      
                      $arquivo = $_FILES['arquivo'];
                      $arquivonome = $_POST['arquivo'];

                      $mensagem     = $_POST['mensagem'];
                      $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.php"</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 = "mail.seusite.com.br"; // Endereço do servidor SMTP
                      $mail->SMTPAuth = true;
                      $mail->Port     = '465'; 
                      $mail->Username = 'webmaster@seusite.com.br'; // Usuário do servidor SMTP
                      $mail->Password = '123456'; // 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)
                      $local          = "Mensagem do Artigo sobre Formulario - Seu site";
                      $mail->Subject  = $local; // 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:1px; font-size:1.2em;"> <strong style="color:#00ABFF;">Nome:</strong> '.$nome.' </p>
                                            <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#00ABFF;">E-mail:</strong> '.$email.' </p>
                                            <p style="width:100%; float:left; margin-bottom:1px; font-size:1.2em;"> <strong style="color:#00ABFF;">Assunto:</strong> '.$assunto.' </p>
                                            <p style="width:100%; float:left; margin-bottom:0px; font-size:1.2em;"> <strong style="color:#00ABFF;">Mensagem:</strong> '.$mensagem.' </p>
                                            <p style="width:100%; float:left; margin-bottom:2px; color:#00ABFF; 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($arquivo['tmp_name'], $arquivo['name']);
                      //$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:30px; border:3px solid #00ABFF; color:#00ABFF; 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:1em;"> Mensagem enviada com sucesso !</p>

                                         </div>

                                        ';
                                
                                  echo    '<meta HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php">';

                        } 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
                
                ?>

                <form class="formulario" method="post" enctype="multipart/form-data">

                   <h1 class="title"><i class="icon icon-mail-1"></i> Fale Conosco</h1>

                   <p>
                      Preencha o Formulário e <b>faça um teste</b> para<br> 
                      o Loop Nerd com arquivo em <b>Anexo</b>.
                    </p>
                    
                    <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="label">
                        <span>Anexar Arquivo</span>
                        <input type="file" name="arquivo" id="arquivo" class="campo" 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>

Caso tenha alguma dúvida deixe o seu 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

Formulário de contato com ENVIO de ANEXO em php

Baixar Código Veja Funcionando

Publicado por: Loop Nerd

1.979 Visualizações

Uma resposta para “Formulário de contato com ENVIO de ANEXO em php”

  1. não consegui fazer rodar me desculpem

Deixe um comentário

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

Artigos Relacionados