String filePath="d:/java/java-mail/README.md";
windows 文件写法和mac linux 不一样。
发送附件邮件
@Value("${spring.mail.username}") private String from; @Autowired JavaMailSender javaMailSender; public void sendAttachmentMail(String to,String subject,String content,String filePath) throws MessagingException { MimeMessage mimeMessage=javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage,true); mimeMessageHelper.setFrom(from); mimeMessageHelper.setTo(to); mimeMessageHelper.setSubject(subject); mimeMessageHelper.setText(content,true); FileSystemResource fileSystemResource=new FileSystemResource(new File(filePath)); String fileName=fileSystemResource.getFilename(); mimeMessageHelper.addAttachment(fileName,fileSystemResource); javaMailSender.send(mimeMessage); }
测试(基于windows)
mailService.sendAttachmentMail("邮箱","主题","内容","E:\\文件名");
参数:
String to,String subject,Strng conent.
String filePath:附件的地址
对象:
FileSystemResource:用来读取文件
FileSystemResource file = new FileSystemResource(new File(filePath));
file.getFileName():附件名
addAttachment('附件名',file)
邮件加附件
多捕获了一个异常,就是文件路径长度越界,但是\\,就不越界,换成/就越界
/** * 发送一封带附件的邮件 * * @param to 发送给某人 * @param subject 邮件主题 * @param content 邮件内容 * @param filePath 邮件附件的文件地址 */ public void sendAttachmentsMail(String to, String subject, String content, String filePath) { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); try { MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setFrom(fromUserName); mimeMessageHelper.setTo(to); mimeMessageHelper.setSubject(subject); mimeMessageHelper.setText(content, true); FileSystemResource file = new FileSystemResource(new File(filePath)); String fileName = filePath.substring(filePath.lastIndexOf(File.separator)); mimeMessageHelper.addAttachment(fileName, file); javaMailSender.send(mimeMessage); log.info("带附件的邮件已经发送。"); } catch (MessagingException e) { log.error("发送带附件的邮件时发生异常!", e); }catch (StringIndexOutOfBoundsException e){ log.error("路径名字长度越界!", e); } }
fileName异常捕获
/** * 附件测试 */ @Test public void sendAttachmentsMail() { String filePath = "C:\\Users\\Administrator\\Desktop\\SpringCloud2018.mmap"; mailService.sendAttachmentsMail(TO_USER_NAME, "主题:带附件的邮件", "有附件,请查收!", filePath); }
/** * 发送一封带附件的邮件 * * @param to 发送给某人 * @param subject 邮件主题 * @param content 邮件内容 * @param filePath 邮件附件的文件地址 */ public void sendAttachmentsMail(String to, String subject, String content, String filePath) { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); try { MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setFrom(fromUserName); mimeMessageHelper.setTo(to); mimeMessageHelper.setSubject(subject); mimeMessageHelper.setText(content, true); FileSystemResource file = new FileSystemResource(new File(filePath)); String fileName = filePath.substring(filePath.lastIndexOf(File.separator)); mimeMessageHelper.addAttachment(fileName, file); javaMailSender.send(mimeMessage); log.info("带附件的邮件已经发送。"); } catch (MessagingException e) { log.error("发送带附件的邮件时发生异常!", e); } }