3
respostas

Enviar dados do formulário html para um e-mail

Gente, estou tentando criar um simples php que enviaos dados de um form em html para um email. Já tentei algumas soluções e até agora não consegui fazer funcionar.

Alguém pode me ajudar explicando o que está errado nesse código? Única coisa que está funcionando é o redirect pra página de obrigado após o envio do formulário.

Obrigado!

HTML:

<form class="form form-p d-flex justify-content-lg-center d-lg-flex flex-column d-sm-flex"  action="envia_fale.php" method="post" name="form">
   <div class="group1 d-md-flex mx-md-0 d-lg-flex d-xl-flex align-items-xl-center ml-xl-0 mr-xl-0 mx-lg-auto mx-auto mx-sm-auto">
      <input type="text" placeholder="Nome" id="nome" class="my-xl-auto  mr-md-5 mb-md-0" name="nome">
      <input type="text" placeholder="Sobrenome" id="sobrenome" name="sobrenome">
   </div>
   <div class="group1 d-md-flex mx-md-0 d-lg-flex d-xl-flex align-items-xl-center ml-xl-0 mr-xl-0 mx-lg-auto mx-auto mx-sm-auto mt-md-5">
      <input type="text" placeholder="Email" id="email" class="my-xl-auto pt-xl-5 m-md-0 mr-md-5" name="email">
      <input type="text" placeholder="Telefone" id="telefone" class="pt-xl-5" name="telefone">
   </div>
   <div class="group1 ml-xl-0 mx-sm-auto mb-sm-4 mb-lg-3 mx-lg-auto mb-xl-0">
      <select name="assunto" id="assunto" class="mt-xl-5 mt-md-5">
         <option value="seg">Assunto</option>
         <option value="seg">Segurança</option>
         <option value="seg">Segurança</option>
         <option value="seg">Segurança</option>
      </select>
   </div>
   <textarea placeholder="Mensagem" name="mensabem" id="" cols="30" rows="10" class="mt-xl-2"></textarea>
   <button class="btn btn-enviar" type="submit" name="submit" value="submit"> Enviar</button>  
</form>

PHP

$destinatario = "teste@spying.com.br";

$nome = $_REQUEST['nome'];
$sobrenome = $_REQUEST['sobrenome'];
$email = $_REQUEST['email'];
$mensagem = $_REQUEST['mensagem'];
$assunto = $_REQUEST['assunto'];
$telefone = $_REQUEST['telefone'];

$body = "===================================" . "\n";
$body = $body . "FALE CONOSCO - TESTE COMPROVATIVO" . "\n";
$body = $body . "===================================" . "\n\n";
$body = $body . "Nome: " . $nome . "\n";
$body = $body . "Nome: " . $sobrenome . "\n";
$body = $body . "Email: " . $email . "\n";
$body = $body . "Telefone: " . $telefone . "\n";
$body = $body . "Mensagem: " . $mensagem . "\n\n";
$body = $body . "===================================" . "\n";

// envia o email
mail($destinatario, $assunto , $body, "From: $email\r\n");




?>
3 respostas

Pelo que eu vi do seu código o e-mail do remetente está vindo do seu formulario (FROM $email). O primeiro parâmetro da função mail é quem vai receber, o remetente é informado no FROM.

Tente seguir as dicas deste link:

https://stackoverflow.com/questions/24644436/php-mail-function-doesnt-complete-sending-of-e-mail

Você pode considerar usar outra forma de mandar e-mails, como o PHPMailler. Aqui tem um exemplo:

https://ajuda.locaweb.com.br/wiki/usar-o-php-mailer-para-envio-de-e-mail-autenticado-smtp-locaweb/

Na verdade o e-mail no formulário está pegando o e-mail da pessoa só pra fins informativos, os dados do formulário estão para serem enviados para o $destinatario

$destinatario = "teste@spying.com.br";

.

mail($destinatario, $assunto , $body, "From: $email\r\n");

Pelo menos era pra ser assim.

Mas vou dar uma olhada nos links que você me mandou, obrigado por enquanto!

Tentei fazer outro código e mesmo assim não deu certo, a mensagem de "email enviado com sucesso" aparece, mas o e-mail não chega.

Códigos atualizados:

HTML:

<form class="form form-p d-flex justify-content-lg-center d-lg-flex flex-column d-sm-flex" action="email.php" method="post">

                                <div class="group1 d-md-flex mx-md-0 d-lg-flex d-xl-flex align-items-xl-center ml-xl-0 mr-xl-0 mx-lg-auto mx-auto mx-sm-auto">
                                    <input type="text" placeholder="Nome" id="nome" class="my-xl-auto  mr-md-5 mb-md-0">
                                    <input type="text" placeholder="Sobrenome" id="sobrenome">

                                </div>

                                <div class="group1 d-md-flex mx-md-0 d-lg-flex d-xl-flex align-items-xl-center ml-xl-0 mr-xl-0 mx-lg-auto mx-auto mx-sm-auto mt-md-5">
                                    <input type="text" placeholder="Email" id="email" class="my-xl-auto pt-xl-5 m-md-0 mr-md-5" name="email">
                                    <input type="text" placeholder="Telefone" id="telefone" class="pt-xl-5" name="telefone">

                                </div>
                                <div class="group1 ml-xl-0 mx-sm-auto mb-sm-4 mb-lg-3 mx-lg-auto mb-xl-0">
                                    <select name="assunto" id="assunto" class="mt-xl-5 mt-md-5">
                                        <option value="seg">Assunto</option>
                                        <option value="seg">Segurança</option>
                                        <option value="seg">Segurança</option>
                                        <option value="seg">Segurança</option>
                                    </select>

                                </div>
                                <textarea placeholder="Mensagem" name="mensagem" id="" cols="30" rows="10" class="mt-xl-2"></textarea>
                                <button class="btn btn-enviar"> Enviar</button>
                            </form>

PHP:

<?php

    if (isset($_POST['email']) && !empty($_POST['email'])) {

   $nome = addslashes($_POST['name']);
   $email = addslashes($_POST['email']);
   $telefone = addslashes($_POST['telefone']);
   $sobrenome = addslashes($_POST['sobrenome']);
   $assunto = addslashes($_POST['assunto']);
   $mensagem = addslashes($_POST['mensagem']); 



    $to = "teste@spying.com.br";
    $subject = "Contato - Spying.com.br";
    $body =   "Nome : " .$nome. "\n".
              "E-mail: ".$email."\n".
              "Telefone: ".$telefone."\n".
              "Assunto: ".$assunto."\n".
              "Mensagem: ".$mensagem;


    $header = "From: pageform@spying.com.br" . "\r\n" . 
    "Reply-To:" .$email. "\e\n".
    "X=Mailer:PHP/" .phpversion();

        if (mail($to, $subject, $body, $header)) {

            echo ("Email enviado com sucesso!");
        }else {
            echo ("Email não pode ser enviado!");
        }

    }


    ?>