Acentuação permanece mesmo após função para retirar
Tenho esse formulário:
<form action="#" id="form">
<input type="hidden" name="language" value="pt" />
<ul id="fale">
<li style="margin: 25px 0 0 70px;">
<label>Nome <span class="erro" id="erro_nome1">Campo vazio</span><span class="erro" id="erro_nome2">Ao menos 3 letras</span>
<br /><input type="text" name="nome" id="nome" class="campo" maxlength="50" /></label>
</li>
<li style="margin: 70px 0 0 70px;">
<label>E-mail <span class="erro" id="erro_email1">Campo vazio</span><span class="erro" id="erro_email2">Informe um e-mail válido</span>
<br /><input type="text" name="email" id="email" class="campo" maxlength="60" /></label>
</li>
<li style="margin: 115px 0 0 70px;">
<label>Telefone <span class="erro" id="erro_telefone1">Campo vazio</span><span class="erro" id="erro_telefone2">Ao menos 8 dígitos</span>
<br /><input type="text" name="telefone" id="telefone" class="campo" maxlength="20" /></label>
</li>
<li style="margin: 25px 0 0 255px;">
<label>País <span class="erro" id="erro_pais1">Campo vazio</span>
<br /><input type="text" name="pais" id="pais" class="campo" maxlength="50" /></label>
</li>
<li style="margin: 70px 0 0 255px;">
<label>Estado <span class="erro" id="erro_estado1">Campo vazio</span>
<br /><input type="text" name="estado" id="estado" class="campo" maxlength="50" /></label>
</li>
<li style="margin: 115px 0 0 255px;">
<label>Cidade <span class="erro" id="erro_cidade1">Campo vazio</span>
<br /><input type="text" name="cidade" id="cidade" class="campo" maxlength="50" /></label>
</li>
<li style="margin: 165px 0 0 70px;">
<label>Assunto <span class="erro" id="erro_assunto1">Campo vazio</span>
<br /><input type="text" name="assunto" id="assunto" class="campo" maxlength="50" style="width: 335px;" /></label>
</li>
<li style="margin: 210px 0 0 70px;">
<label>Mensagem <span class="erro" id="erro_mensagem1">Campo vazio</span><span class="erro" id="erro_mensagem2">Ao menos 10 caracteres</span>
<br /><textarea name="mensagem" id="mensagem" maxlength="250" class="campo" style="width: 335px; height: 95px;"></textarea></label>
</li>
<li style="margin: 335px 0 0 150px;"><input type="image" src="images/fale_pt.png" id="send" alt="FAL_alt" /></li>
</ul>
</form>
Tenho este código para envio de e-mail:
<?php
if(!isset($_SERVER['HTTP_REFERER'])) header("Location: [http://www.dominio.com/"](http://www.dominio.com/));
if(empty($_POST['nome']) || empty($_POST['email']) || empty($_POST['telefone']) || empty($_POST['pais']) || empty($_POST['estado']) || empty($_POST['cidade']) || empty($_POST['assunto']) || empty($_POST['mensagem']) == "1"){
header("Location: [http://www.dominio.com/"](http://www.dominio.com/));
} else {
session_start();
$aTrue = array('à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','õ','ö','ù','ü','ú','ÿ','À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ñ','Ò','Ó','Ô','Õ','Ö','O','Ù','Ü','Ú','Ÿ',);
$aFalse = array('a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','u','u','u','y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N','O','O','O','O','O','O','U','U','U','Y',);
$nome = str_replace($aTrue, $aFalse, $_POST['nome']);
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$pais = $_POST['pais'];
$estado = $_POST['estado'];
$cidade = $_POST['cidade'];
$assunto = str_replace($aTrue, $aFalse, $_POST['assunto']);
$mensagem = $_POST['mensagem'];
$subject = '['.strtoupper($_SESSION['language']).'] '.$assunto;
$message = '
<div style="font: 12px Arial;">
<p>'.$mensagem.'</p>
---<br />
<strong>Telefone:</strong> '.$telefone.'<br />
<strong>'.$cidade.'</strong> » '.$estado.' » '.$pais.'
</div>';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Date: ".date('D, j M Y H:i:s O')."\r\n";
$headers .= "Message-ID: <".md5(mt_rand(1000, 9999))."@dominio.com>\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";
$headers .= "From: ".$nome." <".$email.">\r\n";
$headers .= "Reply-To: Empresa <contato@dominio.com>\r\n";
$headers .= "Return-Path: contato@dominio.com\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: UOL Host";
if(mail("contato@dominio.com", $subject, $message, $headers)){
echo "sucess";
} else {
echo "fail";
} }
?>
Eu já testei as variáveis $nome e $assunto ao fim do código e retornam o texto corretamente sem acentuação. Agora eu não entendo porque no e-mail chega zuado (por estar acentuado).
O PIOR: fiz um outro formulário simprão pra testar e foi certo.
<form action="[http://www.sightwd.com/e-mail"](http://www.sightwd.com/e-mail) method="post">
Nome <input type="text" name="nome" /><br />
Email <input type="text" name="email" /><br />
Tel <input type="text" name="telefone" /><br />
Pais <input type="text" name="pais" /><br />
Estado <input type="text" name="estado" /><br />
Cidade <input type="text" name="cidade" /><br />
Assunto <input type="text" name="assunto" /><br />
Msg <input type="text" name="mensagem" /><br />
<input type="submit" value="enviar" />
</form>
OBS.: No formulário do site eu uso Ajax.
Só nome e assunto que vão zuados, a mensagem vai correta.
Estou enviando para e-mail do UOL Host e testei no Hotmail e obtive a mesma falha.
Alguém vê algum erro aparente? Isto está quase me deixando calvo.
Discussão (2)
Carregando comentários...