使用JavaMail发送的中文附件内容乱码
在使用javamail发送中文附件内容的时候,附件会乱码(不是附件名乱码);代码如下:
public MimeMessage createFileAttachedMail(Session session, String fromAdd, String toAdd, String subject, String content, String fileObjectId, String fileSavePath) throws Exception {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(fromAdd));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toAdd));
message.setSubject(subject);
// 邮件正文
MimeBodyPart text = new MimeBodyPart();
text.setContent(content, MAIL_CONTENT_FORMAT_CHARSET);
// 附件
MimeBodyPart attach = new MimeBodyPart();
DataHandler handler = new DataHandler(new FileDataSource(this.gridFSService.readFiles(fileObjectId)));
attach.setDataHandler(handler);
// 解决中文附件名乱码问题
attach.setFileName(MimeUtility.encodeText(handler.getName()).replaceAll("\r", "").replaceAll("\n", ""));
// 创建容器描述数据关系
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(text);
mp.addBodyPart(attach);
mp.setSubType("mixed");
message.setContent(mp);
message.saveChanges();
//将创建的email写入到本地存储
//message.writeTo(new FileOutputStream(fileSavePath));
return message;
}
public File readFiles(String fileObjectId) {
DB db = mongoOperations.getCollection(mongoOperations.getCollectionName(TextBook.class)).getDB();
// query file saved in gridfs
// by file name
//GridFSDBFile gfsFile = new GridFS(db, "fs").findOne("application.properties");
// by objectId
GridFSDBFile gfsFile = new GridFS(db,"fs").findOne(new ObjectId(fileObjectId));
try {
File preparedAttachedFile = new File(gfsFile.getFilename());
gfsFile.writeTo(preparedAttachedFile);
return preparedAttachedFile;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
在readFile()方法中,
gfsFile.writeTo(preparedAttachedFile);
输出的文件内容并没有乱码;应该是createFileAttachedMail()方法的:
DataHandler handler = new DataHandler(new FileDataSource(this.gridFSService.readFiles(fileObjectId)));
这一句导致的乱码问题吧。是不是应该设置handler的mime类型?请问应该怎么解决呢?
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论