簡體   English   中英

Java郵件編碼非英文字符

[英]Java mail encoding non english characters

使用下面的代碼,我可以發送一封非英語的電子郵件,雖然主題正確顯示,但正文顯示為亂碼。
有任何想法嗎?
謝謝

public void postMail(String recipient, String subject, String message, String from) throws MessagingException, UnsupportedEncodingException {

            //Set the host smtp address
            Properties props = new Properties();
            props.put("mail.smtp.host", "mail.infodim.gr");

            // create some properties and get the default Session
            Session session = Session.getDefaultInstance(props, null);

            // create a message
            Message msg = new MimeMessage(session);

            // set the from and to address
            InternetAddress addressFrom = new InternetAddress(from);
            msg.setFrom(addressFrom);

            InternetAddress addressTo=new InternetAddress(recipient);
            msg.setRecipient(Message.RecipientType.TO, addressTo);

            // Setting the Subject and Content Type
            msg.setSubject(subject);

            msg.setContent(message, "text/plain");
            Transport.send(msg);

        }

嘗試:

msg.setContent(message, "text/plain; charset=UTF-8");

編輯已更改為text/plain

代替

msg.setContent(message, "text/plain");

我會寫的

Multipart mp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setContent(message, "text/plain; charset=ISO-8859-7");
mp.addBodyPart(mbp);

msg.setContent(mp);

我從你的名字中猜到了ISO-8859-7 ,因為這個charset是希臘語,但也許你可以更恰當地選擇它。 或者也許UTF-8適用於您的情況。

如果沒有其他幫助,請嘗試將源文件(包括.java文件)的編碼更改為UTF8。 在Eclipse中,它通過Window - > Preferences - > General - > Workspace:Text file encoding完成,我將CP1252作為文本文件的默認值。

我從.properties文件中獲取文本。 將它們更改為UTF8並沒有幫助。 這很瘋狂,但將我的.java文件切換為UTF8解決了我的問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM