Email chega com texto desconfigurado

Galera,

Tenho um sistema que envia email via uma classe. Esta tudo ok

Problema que quando chega o texto do email, aparece uns simbolos estranhos onde tem acento(quadrados no lugar)

Ja olhei o campo do mysql e esta ok(como text)

Alguem sabe o que pode ser?

valeu

olá andrests.sp,

da uma olha a respeito de contentType,charset,pageEncoding,UTF-8,ISO-8859-1.

vê se ajuda tb:

http://www.guj.com.br/posts/list/215643.java
http://www.guj.com.br/posts/list/143633.java
http://www.guj.com.br/posts/list/115238.java
http://www.guj.com.br/posts/list/80910.java

qualquer coisa coloca o seu código q “monta” e envia o email.

att,


codigo que tem o formulario de envio (montagem)

..
<%@page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
..

A mensagem é armazenada no banco de dados, la esta ok o texto.

Mas qdo vou abrir no outlook pra ver, o texto aparece ou sem as palavras que tem acento OU com simbolos no lugar delas…

Olhei os links que me enviou, fiz uns testes, mas ou acontece o primeiro ou o segundo problema(simbolos)

andrests.sp, testa assim:

..
&lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%&gt;
..

como esta a estrutura do banco? e tb o “Collation” da tabela e dos campos?

eu estava com problema parecido com o Mysql, ai tive q mudar a tabela para “utf8_bin” os campos do tipo texto para “latin1_swedish_ci”
E o jsp ficou da seguinte maneira:

&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;

Eu já tive um problema igual.

Aqui está a solução. Acho que não precisa de synchronized. Você precisa substituir suas letras com acento por “tags html”. Use o método da seguinte forma:
edit: Se você quiser uma solução “mais profissional” utilize uma biblioteca do apache commons se eu não me engano. Eu não recordo o nome mas se vc acha que a solução abaixo não presta, por favor avise que eu vasculho aqui.

edit2: O FORUM ESTA ALTERANDO O CODIGO FONTE(SUBSTITUINDO O TEXTO POR HTML). Tive de remover a tag “code”.

edit3: Cara não tem como eu te passar esse código fonte, a engine do forum insiste em interpretar o código fonte. Coloquei a tag “code” de volta para não machucar o olho de ningúem.
mas pense que o código real é “letra com acento -> representação em html daquela letra” (que é algo tipo &a|acute;"(NAO TEM O PIPE( | ), coloquei ele pra ele n causa no meu código)

EDIT FINAL: Clique em copy to clipboard que vocẽ ira copiar o código certo

eMail = HtmlReplacer.replace(eMail);

[code]
public class HtmlReplacer {

public static String replace(String saida){

    saida = saida.replace("á", "&aacute;");
    saida = saida.replace("â", "&acirc;");
    saida = saida.replace("à", "&agrave;");
    saida = saida.replace("ã", "&atilde;" );
    saida = saida.replace("ç", "&ccedil;");
    saida = saida.replace("é", "&eacute;");
    saida = saida.replace("ê", "&ecirc;");
    saida = saida.replace("í", "&iacute;");
    saida = saida.replace("ó", "&oacute;");
    saida = saida.replace("ô", "&ocirc;");
    saida = saida.replace("õ", "&otilde;");
    saida = saida.replace("ú", "&uacute");
    saida = saida.replace("ü", "&uuml;");
    saida = saida.replace("Á", "&Aacute;");
    saida = saida.replace("Â", "&Acirc;");
    saida = saida.replace("À", "&Agrave;");
    saida = saida.replace("Ã", "&Atilde;" );
    saida = saida.replace("Ç", "&Ccedil;");
    saida = saida.replace("É", "&Eacute;");
    saida = saida.replace("Ê", "&Ecirc;");
    saida = saida.replace("Í", "&Iacute;");
    saida = saida.replace("Ó", "&Oacute;");
    saida = saida.replace("Ô", "&Ocirc;");
    saida = saida.replace("Õ", "&Otilde;");
    saida = saida.replace("Ú", "&Uacute");
    saida = saida.replace("Ü", "&Uuml;");


    return saida;
}

} [/code]

Ricardo, nao entendi o “Edit 1…Edit2”

Eu olhei no banco de dados e esta configurado correto, campo TEXT, column charset: latin1, column collate: latin1.swedish_c1

o meu jsp esta como citei acima, meu css começa com : @Charset UTF-8

enfim, nao sei mais o que posso mudar, outra coisa, as vezes qdo mudo, os caracteres que tem acento some: por exemplo: vitória fica: VITRIA, após fica: aps…etc etc

Lá no banco onde fica armazenado os textos, fica tudo correto, sem erro algum de acento …ô coisa chata…

Sim, eu entendi, mas o problema é que o e-mail será em HTML, por isso você precisa substituir as letras com acento pelo seus respectivos códigos em html.

Clique em “copy to clipboard” que vc vai entender o motivo dos edits. O código que você está vendo não é o código real, porque a engine do forum converteu o código fonte para HTML(copie e verá meu jovem)

E-mails são em HTML, por isso que vc precisa fazer isso, independente do charset que vc está usando (é meio doidera, mas é isso)

Ricardo,

Te mandei uma mp, pq expliquei mais detalhado e o cliboard nao funcionou …

Eu tendo a solucao, posto tudo aqui…

valeu