SpringBoot发送Email邮件
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
定义邮件配置
# 发送人邮件
spring.mail.username=xxxx@foxmail.com
# 接收人邮件
spring.mail.toUser=xxxxx@qq.com
# 发送人邮件授权码
spring.mail.password=xxxxx
# 发送主机类型
spring.mail.host=smtp.qq.com
# 端口
spring.mail.port=465
# 字符集
spring.mail.default-encoding=UTF-8
# 发送邮件协议 全部开启
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
yml格式
spring:
mail:
username: xxxx@foxmail.com
toUser: xxxxx@qq.com
password: xxxxxx
host: smtp.qq.com
port: 465
default-encoding: UTF-8
properties:
mail:
smtp:
ssl:
enable: true
auth: true
starttls:
enable: true
starttls:
required: true
发送邮件核心类
package cn.molu.email.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
/**
* @author molu
* @date 2022/9/27 21:32
* @apiNote
*/
@Service("sendMail")
public class SendMail {
@Value("${spring.mail.username}")
private String fromUser;
@Value("${spring.mail.toUser}")
private String toUser;
@Resource
private JavaMailSender mailSender;
/**
* 发送简单邮件
*/
public void sendSimpleMail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("邮箱主题:主题");
message.setText("邮件内容:异常登录提醒!");
message.setTo(toUser);
message.setFrom(fromUser);
mailSender.send(message);
}
/**
* 发送携带HTML标签的邮件
*/
public void sendSimpleHtmlMail() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(fromUser);
helper.setSubject("邮件主题:异常提醒");
helper.setText("<h1 style='color:red'>异常提醒:登录异常!</h1>", true);
helper.setTo(toUser);
mailSender.send(mimeMessage);
}
/**
* 发送携带img图片的邮件
*/
public void sendSimpleImgMail() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 需要开启 multipart 文件支持
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
String id = "test";
String imgPath = "C:\\Users\\dell\\Desktop\\test.png";
helper.setSubject("邮件主题:图片消息");
helper.setText("<a href='www.baidu.com'><img src='cid:" + id + "'/></a>", true);
FileSystemResource resource = new FileSystemResource(new File(imgPath));
helper.addInline(id, resource);
helper.setTo(toUser);
helper.setFrom(fromUser);
mailSender.send(mimeMessage);
}
/**
* 发送携带附件的邮件
*/
public void sendSimpleResourceMail() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 需要开启 multipart 文件支持
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
String id = "test";
String imgPath = "C:\\Users\\dell\\Desktop\\test.png";
helper.setSubject("邮件主题:图片消息");
helper.setText("<a href='www.baidu.com'><img src='cid:" + id + "'/></a>", true);
FileSystemResource resource = new FileSystemResource(new File(imgPath));
helper.addInline(id, resource);
// 发送附件
helper.addAttachment("test.png",resource);
helper.setTo(toUser);
helper.setFrom(fromUser);
mailSender.send(mimeMessage);
}
/**
* 异步发送简单邮件
*/
@Async // 开启异步注解方法
public void asyncSendSimpleMail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("邮箱主题:主题");
message.setText("邮件内容:异常登录提醒!");
message.setTo(toUser);
message.setFrom(fromUser);
mailSender.send(message);
}
}
发送邮件控制层
package cn.molu.email.controller;
import cn.molu.email.service.SendMail;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.mail.MessagingException;
/**
* @author molu
* @date 2022/9/27 21:32
* @apiNote
*/
@RestController
@RequestMapping("/index/*")
public class IndexController {
@Resource
private SendMail sendMail;
/**
* 发送简单文本邮件
*/
@GetMapping("sendText")
public void sendSimpleMail() {
sendMail.sendSimpleMail();
}
/**
* 发送html邮件
*/
@GetMapping("sendHtmlMail")
public void sendSimpleHtmlMail() throws MessagingException {
sendMail.sendSimpleHtmlMail();
}
/**
* 发送图片邮件
*/
@GetMapping("sendImgMail")
public void sendSimpleImgMail() throws MessagingException {
sendMail.sendSimpleImgMail();
}
/**
* 发送附件邮件
*/
@GetMapping("sendResourceMail")
public void sendSimpleResourceMail() throws MessagingException {
sendMail.sendSimpleResourceMail();
}
/**
* 异步发送邮件
*/
@GetMapping("asyncSendMail")
public void asyncSendSimpleMail() throws MessagingException {
sendMail.asyncSendSimpleMail();
}
}
项目启动类开启异步
package cn.molu.email;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
@EnableAsync // 开启异步支持
@SpringBootApplication
public class EmailApplication {
public static void main(String[] args) {
SpringApplication.run(EmailApplication.class, args);
}
}