利用Javamail 发送带附件的邮件的时候,发现附件如果是中文名的情况下,即使发送成功,接收方也会出现乱码。这个网上很多相关的处理方法,不过有一些地方不应适合,比如用字符转型或者BASE64Encoder加密,都未必适合本人的实际情况
后来发现用javax.mail.internet.MimeUtility.encodeText()解决了这个附件乱码的问题,部分代码如下
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(MimeUtility.encodeText(fileds.getName()));
mp.addBodyPart(bp);