实现Spring发送邮件

Springboot实现发送邮件功能

首先我们导入spring的mail方法

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

获取邮箱授权码——QQ邮箱为例

打开QQ邮箱(网页)—>最上方的设置—>账号—>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

配置application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
application.yml
spring:
mail:
host: smtp.qq.com
username: 你的邮箱(发送方邮箱)
password: 你的邮箱授权码
port: 465
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
ssl:
enable: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory

创建一个Service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@Service
public class MailService {

/**
* 注入邮件工具类
*/
@Autowired
private JavaMailSenderImpl javaMailSender;

@Value("${spring.mail.username}")
private String sendMailer;

/**
* 发送纯文本/HTML格式邮件
* @param to
* @param subject
* @param text
*/
public void sendTextMailMessage(String to,String subject,String text){
checkMail(to,subject,text);
try {
//true 代表支持复杂的类型
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true);
//邮件发信人
mimeMessageHelper.setFrom(sendMailer);
//邮件收信人 1或多个
mimeMessageHelper.setTo(to.split(","));
//邮件主题
mimeMessageHelper.setSubject(subject);
//邮件内容:text后面可以添加true--(text,true)以便使用html格式
mimeMessageHelper.setText(text);
//邮件发送时间
mimeMessageHelper.setSentDate(new Date());
//发送邮件
javaMailSender.send(mimeMessageHelper.getMimeMessage());
System.out.println("发送邮件成功:"+sendMailer+"->"+to);

} catch (MessagingException e) {
e.printStackTrace();
System.out.println("发送邮件失败:"+e.getMessage());
}
}

Controlle

1
2
3
4
5
6
7
8
9
10
/**
* 发送邮件
* @param to
* @param subject
* @param content
*/
@GetMapping("/sendMailMessage")
public void sendHtmlMailMessage(String to,String subject,String content){
mailService.sendHtmlMailMessage(to,subject,content);
}

实现Spring发送邮件
https://www.zheep.top/2024/11/27/实现Spring发送邮件/
作者
西行寺岩羊
发布于
2024年11月27日
许可协议