Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bene Silva Júnior

Enviar dados de formulário PHP para meu e-mail

Recommended Posts

Boa noite!

 

Tenho um formulário de contato no meu site e não estou conseguindo fazer com que ele envie os dados para o meu e-mail.

 

Veja o código:

 

     
 
        ...
 
        $nome =  $_POST["nome"];
        $email = $_POST["email"];
        $conheceuSite = $_POST["ondeConheceuSite"];
        $duvSug = $_POST["duvidasSugestoes"];        
        $boletim = $_POST["boletim"];  
       
         ...

        $email_remetente = $email;
        $email_destinatario = "contato@criandobits.com.br";
        $assunto = "Formulário de Contato";        
                
        $mensagem = '
        NOME: <b>'.$nome.'</b><br />
        E-MAIL: <b>'.$email_remetente.'</b><br />
        ONDE CONHECEU O SITE: <b>'.$conheceuSite.'</b><br />
        DESEJA RECEBER BOLETIM: <b>'.$boletim.'</b><br />
        MENSAGEM: <b>'.$duvSug.'</b><br />';            
       
        $headers = "MIME-Version: 1.1\n";
        $headers .= "Content-type: text/html; charset=UTF-8\n";
        $headers .= "From: $email_remetente\n";
           
        mail($email_destinatario, $assunto, $mensagem, $headers);  
 
        ...

 

Fiz testes com as variáveis PHP e todas estão armazenando valores corretos.

 

Os dados do formulário são gravados no banco de dados normalmente, no entanto os dados não vão para o meu e-mail, que é contato@criandobits.com.br

 

Não sei mais o que pode estar errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pesquise por PHPMailer....

Will, eu pesquisei sobre o PHPMailer e modifiquei o meu código. No entanto, ao enviar o formulário, surge a mensagem de erro:

 

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's WEMBLEY ARENA.','sim','189.124.71.133','Mozilla/5.0 (Windows NT 6.1; WOW64; rv' at line 2 "

 

Parece ser alguma coisa a ver com a versão do mySQL do servidor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça assim (só substituir as especificidades e já era):

Obs.: É NECESSÁRIO usar um email do TEU SERVIDOR DE HOSPEDAGEM para fazer o envio.

header('Content-Type: text/html; charset=utf-8');

$email_remetente = "um_email_do_teu_servidor@site.com";
$headers = "MIME-Version: 1.1\n";
$headers .= "Content-type: text/plain; charset=UTF-8\n";
$headers .= "From: $email_remetente\n"; // remetente
$headers .= "Return-Path: $email_remetente\n"; // return-path

$nome =  $_POST["nome"];
$email = $_POST["email"];
$conheceuSite = $_POST["ondeConheceuSite"];
$duvSug = $_POST["duvidasSugestoes"];        
$boletim = $_POST["boletim"];  

$assunto_mensagem = "Formulário de Contato"; 

global $email;

$enviou = mail("pra_quem_vai@email.com, $email",
"$assunto_mensagem",
"$assunto_mensagem

NOME - $nome
E-MAIL - $email
(...)
MENSAGEM DEIXADA - $duvSug
",
$headers, 
"-f$email_remetente"); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Faça assim (só substituir as especificidades e já era):

 

Obs.: É NECESSÁRIO usar um email do TEU SERVIDOR DE HOSPEDAGEM para fazer o envio.

 

header('Content-Type: text/html; charset=utf-8');

$email_remetente = "um_email_do_teu_servidor@site.com";
$headers = "MIME-Version: 1.1\n";
$headers .= "Content-type: text/plain; charset=UTF-8\n";
$headers .= "From: $email_remetente\n"; // remetente
$headers .= "Return-Path: $email_remetente\n"; // return-path

$nome =  $_POST["nome"];
$email = $_POST["email"];
$conheceuSite = $_POST["ondeConheceuSite"];
$duvSug = $_POST["duvidasSugestoes"];        
$boletim = $_POST["boletim"];  

$assunto_mensagem = "Formulário de Contato"; 

global $email;

$enviou = mail("pra_quem_vai@email.com, $email",
"$assunto_mensagem",
"$assunto_mensagem

NOME - $nome
E-MAIL - $email
(...)
MENSAGEM DEIXADA - $duvSug
",
$headers, 
"-f$email_remetente"); 

Nada cara...

 

Veja:

 

 

        header('Content-Type: text/html; charset=utf-8');
        $email_remetente = "contato@criandobits.com.br";
        
        $headers = "MIME-Version: 1.1\n";
        $headers .= "Content-type: text/plain; charset=UTF-8\n";
        $headers .= "From: $email_remetente\n";
        $headers .= "Return-Path: $email_remetente\n";
       
        $email_destinatario = "contato@criandobits.com.br"; //email que enviará a mensagem a mim
        $assunto = "Formulário de Contato";    
        global $email;       
 
        mail("Formulário, $email_destinatario","$assunto","
        NOME: <b>'.$nome.'</b><br />
        E-MAIL: <b>'.$email_remetente.'</b><br />
        ONDE CONHECEU O SITE: <b>'.$conheceuSite.'</b><br />
        DESEJA RECEBER BOLETIM: <b>'.$boletim.'</b><br />
        MENSAGEM: <b>'.$duvSug.'</b><br />",$headers,"-f$email_remetente");      

 

Mudei os código, mas continua sem enviar e-mail.

Compartilhar este post


Link para o post
Compartilhar em outros sites

=> mail(Formulário, ...
Veja se não é isso.
Tu deixou uma palavra, não uma variável...

Outra coisa, tu não precisa colocar as aspas ali dentro da mensagem. Pode deixar só o texto e a variável ao lado. Funciona na boa.

Tipo:

NOME - $nome

Só assim mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

=> mail(Formulário, ...

Veja se não é isso.

Tu deixou uma palavra, não uma variável...

 

Outra coisa, tu não precisa colocar as aspas ali dentro da mensagem. Pode deixar só o texto e a variável ao lado. Funciona na boa.

 

Tipo:

 

NOME - $nome

 

Só assim mesmo.

Pelo que entendi ficou assim:

 

 

        header('Content-Type: text/html; charset=utf-8');
        $email_remetente = "contato@criandobits.com.br";
        
        $headers = "MIME-Version: 1.1\n";
        $headers .= "Content-type: text/plain; charset=UTF-8\n";
        $headers .= "From: $email_remetente\n";
        $headers .= "Return-Path: $email_remetente\n";
       
        $email_destinatario = "contato@criandobits.com.br"; //email que enviará a mensagem a mim
        $assunto = "Formulário de Contato";    
        global $email;    

        $mensagem = '
        NOME: <b>$nome</b><br />
        E-MAIL: <b>$email_remetente</b><br />
        ONDE CONHECEU O SITE: <b>$conheceuSite</b><br />
        DESEJA RECEBER BOLETIM: <b>$boletim</b><br />
        MENSAGEM: <b>$duvSug</b><br />';            
           
        mail($email_destinatario, $assunto, $mensagem, $headers,"-f$email_remetente");  

 

É isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

=====================
OBS

=====================

O email do REMETENTE é o DO TEU SERVIDOR.
Isso funciona ao contrário. Pois não é o email do USUÁRIO que envia, mas o TEU EMAIL pega os dados e ENVIA para os destinatários.

 

==================================

 

mail("$email_destinatario",
"$assunto","

NOME: <b>$nome</b><br />
E-MAIL: <b>$email_remetente</b><br />
ONDE CONHECEU O SITE: <b>$conheceuSite</b><br />
DESEJA RECEBER BOLETIM: <b>$boletim</b><br />
MENSAGEM: <b>$duvSug</b><br />

"
,
$headers,
"-f$email_remetente");

Tenta assim, mas eu acho que as tags <b> vão ser escritas e nao interpretadas, mas é pra funcionar.
Se não der assim, experimenta colocar o e-mail do servidor na lista que receberá o email.

Compartilhar este post


Link para o post
Compartilhar em outros sites

=====================

OBS

=====================

O email do REMETENTE é o DO TEU SERVIDOR.

Isso funciona ao contrário. Pois não é o email do USUÁRIO que envia, mas o TEU EMAIL pega os dados e ENVIA para os destinatários.

 

==================================

 

mail("$email_destinatario",

"$assunto","

 

NOME: <b>$nome</b><br />

E-MAIL: <b>$email_remetente</b><br />

ONDE CONHECEU O SITE: <b>$conheceuSite</b><br />

DESEJA RECEBER BOLETIM: <b>$boletim</b><br />

MENSAGEM: <b>$duvSug</b><br />

",

$headers,

"-f$email_remetente");

 

Tenta assim, mas eu acho que as tags <b> vão ser escritas e nao interpretadas, mas é pra funcionar.

Se não der assim, experimenta colocar o e-mail do servidor na lista que receberá o email.

O email do servidor seria o mesmo e-mail que irá receber os dados do formulário de contato? Se for, acho que o código abaixo está certo, apesar de ainda não atender o propósito de enviar o e-mail para contato@criandobits.com.br:

 

 

         header('Content-Type: text/html; charset=utf-8');
        $email_remetente = "contato@criandobits.com.br";
        
        $headers = "MIME-Version: 1.1\n";
        $headers .= "Content-type: text/plain; charset=UTF-8\n";
        $headers .= "From: $email_remetente\n";
        $headers .= "Return-Path: $email_remetente\n";
       
        $email_destinatario = "contato@criandobits.com.br";
        $assunto = "Formulário de Contato";    
        global $email;    
      
        mail("$email_destinatario","$assunto","
        NOME: $nome E-MAIL: $email_remetente
        ONDE CONHECEU O SITE:$conheceuSite
        DESEJA RECEBER BOLETIM: <b>$boletim
        MENSAGEM: $duvSug
        ",$headers,"-f$email_remetente");      

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que tu está usando o mesmo e-mail nos dois. Mas seria algo do tipo:
$email_remetente = contato@criandobits.com.br;
$email_destinatario = qualquer_um_que_seja_digitado_pelo usuario;

Experimente usar isso:

$enviou = mail("$email_destinatario","$assunto","

NOME: $nome E-MAIL: $email_remetente
ONDE CONHECEU O SITE:$conheceuSite
DESEJA RECEBER BOLETIM: <b>$boletim
MENSAGEM: $duvSug
"
,$headers,"-f$email_remetente");

if(!$enviou){echo "NAO ROLOU"; exit;} else { echo "DEU CERTO"; exit;}

Vamos ver se está ou não fazendo o envio.
Outra coisa, tu está testando isso online, né? Acessando o site hospedado pra enviar? Pois no wamp, xamp, etc., isso não rola. Rola, mas tem que fazer umas configurações diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que tu está usando o mesmo e-mail nos dois. Mas seria algo do tipo:

$email_remetente = contato@criandobits.com.br;

$email_destinatario = qualquer_um_que_seja_digitado_pelo usuario;

 

Experimente usar isso:

$enviou = mail("$email_destinatario","$assunto","

NOME: $nome E-MAIL: $email_remetente

ONDE CONHECEU O SITE:$conheceuSite

DESEJA RECEBER BOLETIM: <b>$boletim

MENSAGEM: $duvSug

",$headers,"-f$email_remetente");

 

if(!$enviou){echo "NAO ROLOU"; exit;} else { echo "DEU CERTO"; exit;}

 

Vamos ver se está ou não fazendo o envio.

Outra coisa, tu está testando isso online, né? Acessando o site hospedado pra enviar? Pois no wamp, xamp, etc., isso não rola. Rola, mas tem que fazer umas configurações diferentes.

 

Copiei o código que você passou e i IF voltou "DEU CERTO", mas ainda sem sinal do e-mail... Eu estou testando tudo online, e o e-mail do destinatário setei para o e-mail do usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, então o problema deve estar no teu servidor. O script está enviando, mas o servidor está matando o processo.
Já tive problemas com isso, numa hospedagem que era do cliente. Enviei um ticket explicando e eles liberaram.
A UOL Host costuma complicar com scripts de email, sendo necessário usar um guia deles. Locaweb dá isso também.
Mas a melhor coisa agora é ver com a hospedagem porque está bloqueando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, então o problema deve estar no teu servidor. O script está enviando, mas o servidor está matando o processo.

Já tive problemas com isso, numa hospedagem que era do cliente. Enviei um ticket explicando e eles liberaram.

A UOL Host costuma complicar com scripts de email, sendo necessário usar um guia deles. Locaweb dá isso também.

Mas a melhor coisa agora é ver com a hospedagem porque está bloqueando.

Ok. A minha hospedagem é a Hostinger. Vou entrar em contato com eles para verificar isso. De qualquer forma, agradeço pela ajuda e disposição. Boa noite pra você!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.