SpringBoot中JavaMailSender发送附件以及遇到的问题
项目中有一个需求,需要给内部用户邮箱发送附件,直接贴代码:
public void sendAnnex(List<String> to, String fileName, String title, String text, ByteArrayOutputStream os){ //防止中文名字 base64加密以后 名字太长被截断 导致中文乱码问题 System.getProperties().setProperty("mail.mime.splitlongparameters", "false"); MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(username); String[] tos = to.toArray(new String[to.size()]); helper.setTo(tos); if (StringUtils.isNotBlank(title)){ helper.setSubject(title); }else { helper.setSubject("统计数据"); } if (StringUtils.isNotBlank(text)){ helper.setText(text, true); }else { helper.setText("附件", true); } InputStreamSource iss = new ByteArrayResource(os.toByteArray()); helper.addAttachment(MimeUtility.decodeText(fileName), iss); javaMailSender.send(message); } catch (MessagingException e) { log.error("邮件发送附件异常:" + e.getMessage()); } catch (UnsupportedEncodingException e) { log.error("邮件发送附件异常:" + e.getMessage()); } }
实现:
-
实现给多个邮箱发送:seTo(String []) 实现 以流的形式发送: ByteArrayOutputStream os = new ByteArrayOutputStream(1000); 附件名字为中文乱码问题:添加 System.getProperties().setProperty("mail.mime.splitlongparameters", "false");