Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom Dia,
Estou enfrentando um problema com formulário de contato que está dando febre.
O formulário tem os campos Nome, E-Mail, Assunto e Mensagem... Quando o e-mail do cliente tem traços por exemplo, o e-mail de destino não recebe a mensagem.
Exemplo:
Nome: Rafael
E-Mail: ra--fael@hotmail.com
E-MAIL É ENVIADO PORÉM DESTINO NÃO RECEBE E-MAIL
Nome: Rafael
E-Mail: rafael@rafael.com.br
E-MAIL É ENVIADO E DESTINO RECEBE O E-MAIL
Segue o código que faz o envio do e-mail:
if( isset($_POST) )
{
$to = 'email@email.com.br';
$subject = $_POST['assunto'];
$msg = '<table style="padding: 45px;">';
$msg .= '</table>';
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= 'From: ' . $_POST['emailPost'] . "\r\n" . 'Reply-To: ' . $_POST['emailPost'] . "\r\n" . 'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $msg, $headers)){
echo '<div class="successmes">';
echo '<div class="message-box-wrap">';
echo '<i class="fa fa-check-square fa-lg"></i> Sua mensagem foi enviada com sucesso.</div>';
echo '</div>';
}else{
echo '<div class="errormes">';
echo '<div class="message-box-wrap">';
echo '<i class="fa fa-exclamation-circle fa-lg"></i> Sua mensagem não foi enviada.</div>';
echo '</div>';
}
}Sim, o e-mail que faz os envios é da mesma hospedagem e o e-mail que recebe as mensagens também é da mesma hospedagem.
O problema está quando o e-mail da pessoa que preencheu o formulário tem alguns caracteres, como traço por exemplo.
Sim, o e-mail que faz os envios é da mesma hospedagem e o e-mail que recebe as mensagens também é da mesma hospedagem.
Acho que você se confundiu.
O From é variável no seu código:
'From: ' . $_POST['emailPost']
O problema está quando o e-mail da pessoa que preencheu o formulário tem alguns caracteres, como traço por exemplo.
Nunca vi isso antes. Por isso ainda acho que o problema é o domínio do remetente.
Recomendo usar o PHPMailer. Veja http://rberaldo.com.br/enviando-e-mails-com-a-classe-phpmailer/
Beraldo, você deu uma dica que resolveu o problema.
Ao invés de deixar o FROM com o e-mail do usuário, eu deixei com o e-mail que faz o envio. Assim acabou o problema.
Sobre o PHP Mailer eu usava ele antes depois passei a usar essa outra função que mostrei. Agora voltei para o PHP Mailer com a mudança que informei.
Obrigado pela atenção.
Abraço.
Você testou com @hotmail e @rafael.com.br
Geralmente os servidores SMTP forçam que o remetente da mensagem tenha o mesmo domínio corrente. Por exemplo, se seu site está em seusite.com, o remetente deve ser qualquer_coisa@seusite.com. Caso contrário, a mensagem não será entregue.