[英]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.