您现在的位置是:首页>技术分享>MimeMultipart 邮件发送附件名称过长 出现 tcmime bin文件
MimeMultipart 邮件发送附件名称过长 出现 tcmime bin文件
发布时间:2017-10-23 编辑:小付 浏览(1797) 评论(0)
/**
* 邮件发送
* @param formEmail发送方邮件
* @param toEmail收件人邮件
* @param ccEmail抄送人邮件
* @param title邮件标题
* @param message邮件内容
* @param isSec是否密送
* @param files邮件附件
* @throws Exception
*/
public static void sendMail(String formEmail, String[] toEmail, String[] ccEmail,
String title, String message, boolean isSec, List<GridFSDBFile> files) throws Exception{
//修复附件名称过长 附件名称出错BUG
System.getProperties().setProperty("mail.mime.splitlongparameters", "false");
JavaMailSenderImpl ms = (JavaMailSenderImpl) FORP.SPRING_CONTEXT.getBean("mailSender");
MimeMessage msg = ms.createMimeMessage();
msg.setHeader("Content-Transfer-Encoding", "quoted-printable");
MimeMessageHelper mh = new MimeMessageHelper(msg,true, "UTF-8");
mh.setFrom(formEmail);//发件人账户
//密送
if (isSec) {
mh.setBcc(toEmail);
} else {
mh.setTo(toEmail); //收件邮箱
mh.setCc(ccEmail);//抄送邮箱
}
mh.setSubject(title);
/***fubb 修复 邮件附件带html格式的 邮件内容不显示BUG Start...***/
Multipart multipart = new MimeMultipart();
if (files!=null && files.size()>0) {
for (GridFSDBFile f:files) {
File file=new File(f.getFilename());
f.writeTo(file);
BodyPart filePart = new MimeBodyPart();
DataSource source = new FileDataSource(file);
filePart.setDataHandler(new DataHandler(source));
String fileName = MimeUtility.encodeText(f.getFilename());
filePart.setFileName(fileName);
multipart.addBodyPart(filePart);
}
}
//邮件内容
BodyPart messageContentBodyPart = new MimeBodyPart();
messageContentBodyPart.setContent(message, "text/html; charset=utf-8");
multipart.addBodyPart(messageContentBodyPart);
msg.setContent(multipart);
/***fubb 修复 邮件附件带html格式的 邮件内容不显示BUG End...***/
lg.info("发送邮件 标题:"+title);
ms.send(msg);
}主要是这行放在靠前位置:
(如果在new MimeMultipart之后添加,有可能无效)
System.getProperties().setProperty("mail.mime.splitlongparameters", "false");关键字词:java,MimeMessage,MimeMultipart,附件,邮件,tcmime