Ir para conteúdo

Arquivado

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

quinhosp

unction mail(), não envia acento?

Recommended Posts

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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..

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.