странные символы (?) добавлены в конец моего текста темы - PullRequest
2 голосов
/ 21 февраля 2012

У меня проблема с отправкой электронной почты пользователям по Java-коду. Существует некоторая проблема с кодировкой электронной почты. Когда электронное письмо поступает на учетную запись электронной почты, в строке темы ($ subject) возникают проблемы с кодировкой, поскольку в конец текста моей темы добавляются странные символы (?).

Содержимое почтового сообщения само по себе нормально, только строка темы (?) Я искал все, но не могу найти, после использования Unicode и типа контента в качестве текстового / html почтового тела не возникает проблем со специальным символом (ó), но это же исправление не работает для строки темы.

У меня есть класс, который отправляет электронное письмо с javamail, с текстом вроде этот в теме:

"Estimado Iván Escobedo:

Проблема в том, что когда почта приходит к месту назначения, она прибывает таким образом:

"Estimado Iv? N Escobedo:

Все специальные символы á, é, í, ó, ú и т. Д. Заменены на ?.

В чем может быть проблема и как ее решить?

1 Ответ

2 голосов
/ 21 февраля 2012

Вы должны использовать что-то подобное, чтобы правильно прочитать сообщение:

TextMessage txtMessage = (TextMessage)message;
ByteArrayInputStream bais = new ByteArrayInputStream(txtMessage.getText().getBytes ("ISO-8859-15"))

Редактировать:

Санджай нашел решение.

Чтобы правильно настроить сообщение перед отправкой, используйте:

MimeUtility.encodeText(SubjectText, "ISO-8859-15", "Q")

encodeText :

Кодирование «текстового» токена RFC 822 в безопасную для почты форму согласно RFC 2047.

Данная строка Unicode проверяется на наличие символов, отличных от US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит символы, отличные от US-ASCII, она сначала кодируется с использованием указанной кодировки, а затем кодируется с использованием кодировки B или Q. Полученные байты затем возвращаются в виде строки Unicode, содержащей только символы ASCII.

Обратите внимание, что этот метод следует использовать для кодирования только "неструктурированных" заголовков RFC 822.

...