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);
}
}