Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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...
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");
>
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.
=> 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.
>
=> 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 ?
=====================
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.>
=====================
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");É 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.
>
É 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.
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.
>
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ê!
pesquise por PHPMailer....