Ir para conteúdo

POWERED BY:

Arquivado

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

marcelo2605

PHP Mailer não mostra email do remetente

Recommended Posts

Pessoal, estou usando o PHP Mailer para receber os email enviados pelo formulário de contato do site e queria que o email do usuário aparecesse no campo From do email. Então fiz o seguinte:

 

$mail->From = ($_POST['email']);

 

Mas mesmo assim, continua aparecendo o email do destinatário no campo From. Como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso está acontecendo por motivos meio que óbvios, né? O $_POST abriga os valores inputados anteriormente. Se um usuário é quem inputa valores, então $_POST['email'] irá conter o e-mail que um usuário digitou, este e-mail que é para onde iremos enviar a mensagem.

 

Se a sua estrutura for essa, então você tem que me falar quem você quer que envie o e-mail, porque o from, além de tudo, é "de quem enviou". Sacou?

 

Em outras palavras, $_POST['email'] está armazenando um e-mail vindo de um formulário. Se este formulário é administrativo e neste campo vai o e-mail de quem envia, então nos explique melhor o seu caso para estudarmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se deseja que o e-mail do usuário apareça no campo from, verifique então se o value do input é realmente email porque é realmente essa a maneira de buscar o valor. Geralmente eu só coloco em os ();

 

$mail->From = $_POST['email'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Faça o que o Alex falou, se não funcionar, debugue:

<?php
  print_r($_POST);

Fazendo isso, você consegue visualizar tudo o que o usuário está enviando. Com as informações, verifique se há algo no $_POST['email'].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guilherme e Allex, alterei mas não deu certo.

 

Deveria funcionar, pois o $_POST['email'] também é usado no corpo do email e lá o email pararece.

 

Guilherme, onde coloco o código que você passou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se aparece no corpo de e-mail mas não no from, não tem a necessidade do print_r como te mostrei ali. Mas, respondendo a sua pergunta, o certo seria colocá-lo na sua action de envio de e-mail para ver se as informações do formulário estão sendo realmente enviadas.

 

Dando continuidade ao seu problema, aparece no corpo mas não no from, é isso? E se você der um echo, no $_POST['email'] em uma área útil antes do envio do e-mail, será que ele vai aparecer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guilherme, o mais estranho é que, mesmo colocando um endereço de email em From, ele não aparece.

 

Veja se consegue encontrar algum erro:

 

// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465;
$mail->Username = '***'; // Usuário do servidor SMTP
$mail->Password = '***'; // Senha do servidor SMTP

// Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->From = $_POST['email'];
$mail->FromName = ($nomeCompleto); //  nome  do solicitante

// Define os destinatário(s)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->AddAddress('***', '');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guilherme, o nome do usuário que preencheu o formulário aparece

 

$mail->FromName = $_POST['name']; //  nome  do solicitante

 

Mas o email dele não.

 

$mail->From = $_POST['email'];

 

No lugar, aparece o email do destinatário

$mail->AddAddress('emailde destino @ dominio.com.br', '');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. Será que em algum outro lugar você já não está definindo o $from? Digo, em algum lugar posterior. Porque isso não acontece do nada, acredite.

 

Quer postar todo a sua action de envio de e-mail?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, aí vai!

 

<?php
$promocoes = $_POST['ofertas'];
if ($promocoes == "1"){
$promocoes_valor = "Sim";}
else{ $promocoes_valor = "Não";};

if ($_POST['linkContato'] == '/new/contatoE.php'){
$link_reservas = 'em inglês';	
}

require("class.phpmailer.php");

// Inicia a classe PHPMailer
$mail = new PHPMailer();

$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->SMTPSecure = "tls"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 587;
$mail->Username = 'email@dominio.com.br'; // Usuário do servidor SMTP
$mail->Password = '***'; // Senha do servidor SMTP

$mail->From = $_POST['email'];
$mail->FromName = $_POST['name']; //  nome  do solicitante

$mail->AddAddress('email@dominio.com.br', '');

$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'UTF-8'; // Charset da mensagem (opcional)

$mail->Subject  = "Mensagem enviada pelo site ".$link_reservas; // Assunto da mensagem

$mail->Body .= "Nome: ".nl2br($_POST['name'])."<br>";
$mail->Body .= "Email: ".nl2br($_POST['email'])."<br>";
$mail->Body .= "Mensagem: ".nl2br($_POST['message']);

$enviado = $mail->Send();

$mail->ClearAllRecipients();
$mail->ClearAttachments();

if ($enviado) {

header("Location: http://www.dominio.com.br/".$_POST['linkContato']."?enviadoContato=true");} 
else {
header("Location: http://www.dominio.com.br/".$_POST['linkContato']."?erroContato=true");
}

?>

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.