繁体   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