2012-05-24 3 views
1

Мне нужно отправить HTML-контент на разных языках. моя конфигурация являются:Java-почта не поддерживает иностранные языки

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_18_19002270.1337852743826" 

------=_Part_18_19002270.1337852743826 Content-Type: text/html; charset=Cp1252 Content-Transfer-Encoding: quoted-printable 

и в почте я получаю все символы как ?. Может кто-нибудь предложить мне, как установить кодировку, чтобы я мог получать почту на правильном языке.

Благодаря

нашел решение :)

MimeBodyPart htmlPart = new MimeBodyPart(); 
     htmlPart.setContent(bodyText, "UTF-8"); 


     htmlPart.setText(bodyText, "utf-8"); 
     htmlPart.setHeader("Content-Type","text/html; charset=\"utf-8\""); 
     htmlPart.setHeader("Content-Transfer-Encoding", "quoted-printable"); 

до сих пор я не в состоянии кодировать строку Тема.

ответ

2

Этот фрагмент кода может вам помочь. :)

MimeMessage msg = new MimeMessage(session); 
msg.setSubject("yourSubject", "UTF-8"); // here you specify your subject encoding 
msg.setContent("yourBody", "text/plain; charset=utf-8"); 

msg.setFrom("senderAddress"); 
msg.addRecipient(Message.RecipientType.TO, "recieverAddress"); 
Transport.send(msg); 

EDIT:

Here метод я использовал, чтобы установить кодировку сюжетной линии.

+0

Не работает для меня :( – Romi

+0

я получил «? UTF-8? B? W5jCp8OZwoTDmMKqw5jCs8OYwqzDmcKKw5nChCDDmcKBw5nCiiDDmcKF? = =? UTF-8? B? w5nChsOYwqfDmcKBw5jCs8OYwqkgw5jCp8OZwoTDmMKjw5nChMOYwrnDmMKn? = =? UTF-8? B? w5jCqCDDmMKnw5nChMOYwqPDmcKIw5nChMOZworDmcKFw5jCqMOZworDmMKp? = =? UTF-8? B? IMOZwoTDmMK0w5jCscOZwoPDmMKpTWNEb25hbGTDosKAwplz? = "Wheres ожидается в Arebic – Romi

+0

также установить свойство' props.setProperty (" кодировка "," utf-8 ");' – HashimR

1

Попробуйте переключить charset=Cp1252 на charset=UTF-8.

+0

точно. Я использовал MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent (bodyText, "charset = UTF-8"); но при печати am charset = Cp1252 :( – Romi

+0

Как насчет метода setText? –

+0

Нет, я не использую setText(), должен ли я установить кодировку здесь? – Romi

1

конвертировать всю строку в UNICODE Я использовал следующий код для преобразования Всего HTML файла для чтения в строке с помощью FileUtils

содержимого String = FileUtils.readFileToString (новый файл ("/ путь/к// HTMLFILE"), «UTF-8»)

Я пытался послать e-mail на китайском, арабском, японском и испанском языках, так что при конвертировании я не мог понять это во время установки содержимого в MimeMessage и MimeMultipart

So я читаю весь файл как строку, а затем символ, который лежит между 1-128, т.е. английским, Numeric Sp ecial Characters Space и т. д., которые принадлежат ASCII. Я сохранил их в строке и остальном все символы преобразуются в Юникод

Кодекс Подобно Выше комментарий, но полезно во время отправки электронной почты на нескольких языках

package com.test; 

/** 
* @author mohammmed maaz 
* 
*/ 
public class StringToUniCode { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     String str = "<div>Chinese 你好嗎 How are you Japanese お元気ですか Arabic كيف حالك Spanish cómo estás</div>"; 
     String[] codePointAt = new String[str.length()]; 

     for (int j = 0; j < str.length(); j++) { 
      int charactercode = Character.codePointAt(str, j); 
      if (charactercode > 0 && charactercode < 128) { 
       codePointAt[j] = String.valueOf(str.charAt(j)); 
      } else { 
       codePointAt[j] = "&#" + String.valueOf(charactercode) + ";"; 
      } 

     } 

     StringBuilder strBuilder = new StringBuilder(); 
     for (int i = 0; i < codePointAt.length; i++) { 
      strBuilder.append(codePointAt[i]); 
     } 
     System.out.println("New String :: " + strBuilder.toString()); 

    } 
} 

Выход:

New String :: <div>Chinese &#20320;&#22909;&#21966; How are you Japanese &#12362;&#20803;&#27671;&#12391;&#12377;&#12363; Arabic &#1603;&#1610;&#1601; &#1581;&#1575;&#1604;&#1603; Spanish c&#243;mo est&#225;s</div> 

MimeMessage msg = new MimeMessage(session); 
String UniCodeSubject = convertToUniCode(yourSubject); 

msg.setSubject(UniCodeSubject, "UTF-8"); // here you specify your subject encoding 

То же самое устройство для крепления кузова с использованием DataHandler

new DataHandler("UniCodeSubjectString","text"/html); 
EmailMimeMultiPart.addBody(MimeBodyPart); 

Добавить UTF-8 В MimeMultiPart В то время как настройка Содержание и Transport.Send()

Смежные вопросы