SpringBoot实现邮件发送
发送前准备
发送
1、环境搭建
使用SpringBoot发送邮件,首先导入依赖:
<!-- 发送邮箱的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
项目创建成功后,在application.properties中完成邮件基本信息配置,如下:
这样基本的环境就搭建好了。
2、发送简单邮件
创建一个service用来封装邮件的发送,代码如下:
代码解释:
-
JavaMailSender是SpringBoot在MailSenderPropertiesConfiguration类中 配置好的,该类在 Mail自动配置类MailSenderAutoConfiguration中导入,因此这里注入JavaMailSender就可以使用了。 简单邮件可以直接构建一个SimpleMailMessage对象进行配置,配置完成后,通过JavaMailSender将邮件发出去。
配置完成后,在单元测试中写一个测试方法进行测试,代码如下:
3、发送带附件的邮件
要发送带附件的邮件也非常容易,通过调用Attachment方法即可添加附件,该方法调用多次即可添加多个附件。
/**
* 发送带附件的邮件
* @param from 邮件发送者
* @param to 邮件收件者
* @param subject 邮件主题
* @param content 邮件内容
* @param file 附件
*/
public void sendAttachFileMail(String from, String to, String subject, String content, File file){
try {
MimeMessage mimeMessage=javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content);
helper.addAttachment(file.getName(),file);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
这里使用MimeMessageHelper简化了邮件配置,他的构造方法的第二个参数true表示构造一个multipart message类型的邮件,multipart message类型的邮件包含多个正文、附件以及内嵌资源,邮件的表现形式更加丰富。最后通过addAttachment方法添加附件。 在单元测试中添加如下方法进行测试:
4、发送带图片资源的邮件
有的邮件正文中可能要插入图片,使用FileSystemResource可以实现这一功能,代码如下:
/**
*发送带图片资源的邮件
* @param from 邮件发送者
* @param to 邮件收件者
* @param subject 邮件主题
* @param content 邮件内容
* @param srcPath 图片资源路径
* @param resIds 资源id
*/
public void sendMailWithImg(String from, String to, String subject, String content,String[] srcPath,String[] resIds){
if(srcPath.length!=resIds.length){
System.out.println("发送失败!");
return;
}
try {
MimeMessage mimeMessage=javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content);
for(int i=0;i<srcPath.length;i++){
FileSystemResource res=new FileSystemResource(new File(srcPath[1]));
helper.addInline(resIds[i],res);
}
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
再发送邮件时分别传入图片资源和资源id,通过FileSystemResource构造静态资源,然后调用addInLine方法将资源加入到邮件对象中。 接下来在测试类中添加如下方法进行测试:
