private void addBodyByFile(MimeMultipart mimeMultipart,List<String> filePaths) throws MessagingException, UnsupportedEncodingException{
if(filePaths == null || filePaths.size() == 0){
return ;
}if(mimeMultipart == null){
throw new NullPointerException("MimeMultipart is null");
}
for(int i =0;i<filePaths.size();i++){
MimeBodyPart mimePart = new MimeBodyPart();
FileDataSource dataSource = new FileDataSource(filePaths.get(i));
DataHandler dh = new DataHandler(dataSource);
mimePart.setDescription(Part.ATTACHMENT);
//mimePart.setFileName(dataSource.getName());
mimePart.setFileName(MimeUtility.encodeText(dataSource.getName()));
mimePart.setDataHandler(dh);
mimeMultipart.addBodyPart(mimePart);
}
}
通常我们用“mimePart.setFileName(dataSource.getName());”这种方式写的时候附件的名称会有中文乱码问题,解决办法是我红色的代码部分。