Início > Programação > Corrigindo o Encoding do Assunto do E-mail

Corrigindo o Encoding do Assunto do E-mail

Passei por um daqueles problemas do tipo “na minha máquina funciona”. Enviando e-mails com JavaMail pela aplicação rodando na minha máquina ou testes unitários locais, o encoding do assunto dos e-mails estava correto, mas quando os testes unitários rodavam no Hudson em um Ubuntu Server, o assunto ficava assim:

=?ANSI_X3.4-1968?Q?Teste?=

Um colega me mostrou que rodando na máquina dele o encoding do assunto também estava incorreto, mas ainda assim diferente do servidor. Minha hipótese inicial era que o encoding do servidor estava diferente do encoding local. Tentei a solução indicada aqui, mas não funcionou. Também testei por esse caminho, mas não deu certo.

Pensando melhor, entendi que na verdade o problema não era o encoding setado no ambiente onde a aplicação rodava, mas sim que a aplicação estava dependente desse ambiente! Pesquisando um pouco, descobri essa solução. A interface Message tem um método “setMessage”que recebe a String do assunto, mas passei a utilizar o método “setMessage” da sua implementação, o MimeMessage, que tem dois parâmetros, o assunto e o encoding:

Session session=Session.getDefaultInstance(new Properties());
MimeMessage mimeMsg= new MimeMessage(session);
String subject="Teste de Acentuação.";
mimeMsg.setSubject(subject,"UTF-8");

Funcionou na minha máquina, na do meu colega e no servidor.

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: