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!
Eu tenho um form de cadastro pra receber novidades, com nome email, quando eu preencho os campos sem colocar acento tudo funciona corretamente.
O problema é que quando eu coloco acento no campo nome, ex: Márcio, o email não chega ao destino.
Alguém pode me ajudar?
Então, eu testei não funciona deste jeito. Quando eu tiro
$cabecalho .= "Content-type: text/plain; charset=utf-8\r\n";
o email chega ao destino daquela foma, ou seja, quando eu não coloco acento na string "nome = Márcio" ela vai, porém quando coloco o acento o email não chega.
Com o código adicionado, nenhuma forma de email chega.
Aqui vão os códigos
form
<div class="chamada-novidades">
<h2 class="fonte">Novidades</h2>
<p>Recebas as novidades no seu email. Praticidade que você merece. Cadastre-se!</p>
<form name="form-newsletters" method="post" action="envia-form2.php">
<ul>
<li>
<label>Nome:</label>
<input type="text" id="FN_nome" name="nome" class="campo validar" title="Nome{tipo:'obrigatorio'}" />
</li>
<li>
<label>E-mail:</label>
<input type="text" id="FC_email" name="email" class="campo validar" title="E-mail{tipo:'email',min:1}" />
</li>
<li>
<input type="reset" value="Limpar" class="reset" title="Limpar campos do formulário" />
<input type="submit" title="Cadastrar" value="Cadastrar" class="mais" />
</li>
</ul>
</form>
</div>
envia-form2.php
<?php
$nome = $_POST["nome"];
$email = $_POST["email"];
$msg .= "QUERO RECEBER NOVIDADES - BUFFET\n\n";
$msg .= "Nome:\t$nome\n\n";
$msg .= "Email:\t$email\n\n";
$cabecalho = "From: $nome";#Titulo da mensagem
mail("buffet@gmail.com.br", "Quero Receber Novidades", $msg, $cabecalho);
echo "<script>window.location.href='index.php'</script>";
?>
aqui segue o codigo de validação do form caso obrigatorio
// Obrigatorio
case "obrigatório": case "obrigatorio":
if(validar.valor.replace(/[\s\.,()_-]/g,"").length == 0){
validar.valido = false;
validar.msg = "deve ser preenchido!";
}
break;// Obrigatorio
case "obrigatório": case "obrigatorio":
if(validar.valor.replace(/[\s\.,()_-]/g,"").length == 0){
validar.valido = false;
validar.msg = "deve ser preenchido!";
}
break;>
Tente utilizar
utf8_encode pode funcionar.
mas eu ja tente ai
$cabecalho .= "Content-type: text/plain; [b]charset=utf-8[/b]\r\n";
só que ai que nehum email chega ao su destino, nem os que estão sem acento.
Posta seu codigo todo.
Se não tenta utf8_encode($variavel).
>
Posta seu codigo todo.
Se não tenta utf8_encode($variavel).
Luciano o código ta posta acima no primeiro post
Bom dia!
Eu percebi que a header não aceita string com acento, mas no corpo da mensagem vai tudo acentuado normalmente.
um meio é converter os caracteres especiais do header para base64
function foo( $label, $charset = 'utf-8' ){
return '=?' . $charset . '?B?' . base64_encode( $label ) . '?=';
}
//echo foo( 'acentuação' );
//exemplo:
$fromName = 'josé';
$fromMail = 'jose@foo.bar';
$header = 'From: ' . foo( $fromName ) . '<' . $fromEmail . '>';
$header .= PHP_EOL . 'Content-type: text/plain; charset=utf-8';
obs: é apenas uma dica, não a solução definitiva..
Tente utilizar
utf8_encode pode funcionar.