Olá pessoal, td bem?
Gostaria de saber se alguém faz idéia por que tem hora que o e-mail enviado via formulário chega e hora não chega. No Gmail e no Bol está tudo funcionando, porém é no e-mail Locaweb é que está acontecendo a confusão. Percebi que quando põe acento no campo do assunto, em um dos meus e-mails Locaweb, o e-mail vai pra spam. Em outro e-mail Locaweb simplesmente não chega em lugar nenhum. Todavia em todos os casos o formulário me avisa que foi enviado corretamente.
Vou postar os códigos que programei:
função javascript que valida o formulário:
function validacaoContato(){
/* console.log('valida formulario'); */
$("#formulario").validate({
rules:{
nome: {required: true},
email: {required: true, email: true},
assunto: {required: true},
mensagem:{required: true}
},
messages:{
nome: {required: "Favor informar o seu nome"},
email: {required: "Favor informar o seu e-mail", email:"favor preencher um e-mail válido"},
assunto: {required: "Favor preencher com um assunto"},
mensagem:{required: "Favor preencher com uma mensagem"},
},
errorElement:"div",
wrapper:"div",
errorPlacement: function(error, element) {
error.appendTo(element.closest('div'));
error.css({
"color":"red",
"font-size":"14px",
"position":"absolute",
"top":element.closest("div").find(".contato_form_field").height()+50+"px",
"text-align":"right"
});
},
submitHandler: function(form) {
var variaveis = $(form).serialize();
$.ajax({
url: "php/js_php/envia_email.php",
type: "POST",
data: variaveis+'&destinatario='+representante_email,
dataType:"json",
success: function(resposta_do_arquivo_php){
if (resposta_do_arquivo_php.sucesso == 1) {
$("#formulario").prepend('<div id="form_sobrepoe" style="position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:none;"></div>');
$(".resposta").html("");
$(".resposta").html("e-mail enviado com sucesso").appendTo("#form_sobrepoe").css({'color':'green','margin':'5px 0 10px 0','display':'block','position':'absolute','bottom':'0px'});
$("#nome").val("");
$("#email").val("");
$("#assunto").val("");
$("#mensagem").val("");
} else {
$(".resposta").html("");
$(".resposta").html("ops, ocorreu um erro, tente novamente mais tarde").css({'color':'red','margin':'5px 0 10px 0','display':'block'});
$("#nome").val("");
$("#email").val("");
$("#assunto").val("");
$("#mensagem").val("");
}
},
error:
function(a,b,c){
/* console.log(a,b,c); */
$(".resposta").html("");
$(".resposta").html("Ops, ocorreu um erro, tente novamente mais tarde").css({'color':'red','margin':'5px 0 10px 0','display':'block'});
}
});
}
})
}
arquivo php que recebe as variáveis:
<?php
require_once "../classes/EnviaEmail.class.php";
$nome = $_POST['nome'];
$email = $_POST['email'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];
$destinatario = $_POST['destinatario'];
$texto =
'<html>
<head>
</head>
<body>
contato: <br/><br/>
De: '.$nome.' <br/><br/>
E-mail: '.$email.' <br/><br/>
Assunto: '.$assunto.' <br/><br/>
Mensagem: '.$mensagem.'<br/><br/>
</body>
</html>';
$email_c = new EnviaEmail($email,$assunto,$destinatario,$texto,1);
$email_c->enviaEmail();
?>
e a classe que envia o e-mail:
<?php
class EnviaEmail
{
private $_emailsender,$_email_remetente,$_destinatario,$_assunto,$_headers,$_mensagem,$_quebra_linha,$_array_resposta,$_r;
public function __construct($email_p,$assunto_p,$destinatario_p,$mensagem_p,$r){
$this->_email_remetente = $email_p;
$this->_assunto = $assunto_p;
$this->_destinatario = $destinatario_p;
$this->_mensagem = $mensagem_p;
$this->_r = $r;
}
private function configuraVars(){
$this->_emailsender = "emailautomatico@" . str_replace('www.','',$_SERVER['HTTP_HOST']);
if(PHP_OS == "Linux"){
$this->_quebra_linha = "\n"; //Se for Linux
} elseif(PHP_OS == "WINNT"){
$this->_quebra_linha = "\r\n"; // Se for Windows
} else {
$this->_array_resposta['sucesso'] = 0;
$this->_array_resposta['mensagem'] = 'erro';
exit($this->_array_resposta);
}
}
private function montaHeaders(){
$headers = "MIME-Version: 1.1" .$this->_quebra_linha;
$headers .= "Content-type: text/html; charset=utf-8" .$this->_quebra_linha;
$headers .= "From: " . $this->_emailsender.$this->_quebra_linha;
if(strlen($this->_destinatario) > 0) $headers .= "Cc: ".$this->_destinatario.$this->_quebra_linha;
if(strlen($this->_destinatario) > 0) $headers .= "Bcc: ".$this->_destinatario.$this->_quebra_linha;
$headers .= "Reply-To: " . $this->_email_remetente . $this->_quebra_linha;
return $headers;
}
public function enviaEmail(){
/* header('Content-Type: text/html; charset=utf-8');*/
$this->configuraVars();
$this->_headers = $this->montaHeaders();
if(mail($this->_destinatario, $this->_assunto, $this->_mensagem, $this->_headers, "-r". $this->_emailsender)){
$this->_array_resposta['sucesso'] = 1;
} else {
$this->_array_resposta['sucesso'] = 0;
};
if($this->_r == 1){
echo json_encode($this->_array_resposta);
}
}
}
?>
obrigado a todos