您现在的位置是:首页>技术分享>MimeMultipart 邮件发送附件名称过长 出现 tcmime bin文件
MimeMultipart 邮件发送附件名称过长 出现 tcmime bin文件
发布时间:2017-10-23 编辑:小付 浏览(1615) 评论(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