Ir para conteúdo

POWERED BY:

Arquivado

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

ment0r

Envio de e-mails com caracteres especiais

Recommended Posts

Saudações a todos. Bom amigos,

 

meu problema é o seguinte: uso um formulário em uma determinada página de meu sistema para envio de email. O envio é feito normalmente (phpMailer), mas tudo na mensagem sai errado, ou seja, com caracteres especiais. (Ex.: Olá, meu nome é:). Assunto, mensagem, tudo que tem ascento e/ou ç sai "zuado".
Já tentei usar Content-type diferentes, header(Content-type...) nada funcionou. Engraçado que eu copiei e colei o código de uma outra página, de um outro site que eu fiz, ambos hospedados na mesma empresa.

Se alguém tiver alguma outra ideia do que eu possa fazer pra resolver isso... Agradeço muito.

Boa noite a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique no HTML se o charset está correto. Tanto a codificação da string de entrada e da string de saída tem de ser as mesma.

Ex.:

<meta charset="UTF-8">

 

Veja: http://www.supertelnet.com/artigos/uft8-para-iso-8859-1-converter-texto-html

 

Voce também pode converter a string de saida do PHPMailer com htmlentities(). Ou talvez converter a string de entrada com o htmlentities() e a de saida com html_entity_decode().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente muito obrigado por sua ajuda Raoni Botelho Sporteman. Fiz um teste rápido usando

html_entity_decode() em uma das string de saída e resolveu, mas preciso testar no código inteiro, pois há várias outras.

Assim que tudo for testado eu posto aqui pra todos.

 

Mais uma vez, obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Após vários e vários testes, ainda não deu certo rsrs. Bom, a mensagem (body) do e-mail está correta, mas o nome do destinatário (que é pego via formulário) não fica corretamente. Já fiz de tudo: htmlentities(), html_entity_decode(), Header... mas nada adiantou.

 

Só que em uma outra página de envio de e-mail, fica tudo codificado, estranho... pelo fato de que ambas estão no mesmo servidor e é ctrl c / ctrl v uma da outra.

 

Por fim, qdo enviado para o gmail, dá tudo certo! Vai entender.

Se alguém souber de mais alguma coisa e puder me passar, eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca assim no seu index

<?php ini_set('default_charset','UTF-8');?>

Coloca assim na mensagem do PHP

            $headers = "MIME-Version: 1.0\n";
            $headers .= "Content-type: text/html; charset=utf-8\n";

No hotmail você terá problema de acentuação no assunto, pois faça assim

$subject = '=?UTF-8?B?'.base64_encode("Confirmação de cadastro").'?=';

Vai ficar assim

$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$subject = '=?UTF-8?B?'.base64_encode("Confirmação de cadastro").'?=';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos, primeiramente muito obrigado pela ajuda de todos.

 

O negócio é o seguinte: está muito confuso essa minha situação. Eu criei uma variável $mensagem, nela eu vou concatenando o que será exibido no corpo do e-mail.
Acontece que alguns trechos dessa mensagem saem com acentos codificados e outros não. Segue um pequeno exemplo:

 

$nome = $_POST['nome']; // suponhamos que o $nome seja João.
$mensagem .= 'Olá'.$_POST['nome'].'você mora em São João'

 

Então nessa mensagem sairia (exemplo):
"Olá JoÜo, você mora em SÜo JoÜo"

Ou seja, tando vindo via POST ou então sendo declarada na própria página, da errado.

 

Já usei:

  1. <?php ini_set('default_charset','UTF-8');?>
  2. <meta charset="UTF-8">
  3. <?php Header...?>

Não consigo resolver. O servidor que hospedo usa UTF-8 e minhas páginas estão salvas em UTF-8 (sem bom).

 

Por favor, espero que alguém possa sanar esse minha dúvida (dor de cabeça). Desde já muito obrigado a todos.

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.