SpringBoot整合邮箱
1,开启POP3/SMTP/IMAP服务
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RM24mKMp-1687834282584)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145621655.png)]](https://img-blog.csdnimg.cn/802df3d366cf414dbeecc68669d40cce.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbsfWxtY-1687834282584)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145706052.png)]](https://img-blog.csdnimg.cn/f6e901a9746c44a6b9ed8513c47bada8.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lTV35iRU-1687834282585)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145500896.png)]](https://img-blog.csdnimg.cn/660f6855017f4c76bf37164592404ad4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-22nRoxPc-1687834282586)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145515444.png)]](https://img-blog.csdnimg.cn/a4237803b9e549e884637cda863a8b5b.png)
注意:每个邮箱的密码唯一,不要随意分享给他人
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NDsWZAba-1687834282586)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627085851724.png)]](https://img-blog.csdnimg.cn/f8b46434663c446c8c2e771d002bafce.png)
最后就是这个样子了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvtM91Wa-1687834282587)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145554617.png)]](https://img-blog.csdnimg.cn/d7678cc5810945fa8880343ec976f3ce.png)
2,整合测试
2.1,pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w5.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sin</groupId>
<artifactId>mail_massage</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mail_massage</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<!-- 短信业务 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.2,application.yml
spring:
mail:
# 配置SMTP服务器地址
host: smtp.126.com
# 配置端口号465或者25
port: 25
# 发送者邮箱(根据自己邮箱填写)
username: sin8023@126.com
# 配置密码,注意是开启POP3/SMTP的授权密码(根据自己的授权密码填写)
password: SZBSI****HNYAA*
properties:
mail:
smtp:
auth: true
enable: true
ssl:
# 设为true时 端口号设为 465 设为false时 端口号设为25
enable: false
socketFactoryClass: javax.net.ssl.SSLSocketFactory
#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: true
# 邮箱编码格式
default-encoding: UTF-8
2.3,MailService.java
package com.sin.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 8:50
* @description
*/
@Service
public class MailService {
@Autowired(required = false)
private JavaMailSender mailSender;
@Value("${spring.mail.username")
private String userName;
/**
*
* @param to 收件人
* @param subject 邮箱标题
* @param content 邮箱内容
* @throws MessagingException
*/
public void sendMail(String to, String subject, String content) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
//邮箱发送者
helper.setFrom(userName);
//收件人,可以为多个收件人,收件人之间用逗号隔开
helper.setTo(to);
// 邮箱标题
helper.setSubject(subject);
// 邮箱内容
helper.setText(content, true);
mailSender.send(message);
}
}
2.4,MailController.java
package com.sin.controller;
import com.sin.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 8:50
* @description
*/
@RestController
public class MailController {
@Autowired
private MailService mailService;
@GetMapping("/sendMail")
public String sendMail() {
try {
mailService.sendMail("1824368699@qq.com", "测试邮箱", "使用SpringBoot整合邮箱发送消息");
return "邮件发送成功";
} catch (MessagingException e) {
e.printStackTrace();
return "邮件发送失败";
}
}
}
2.5,测试
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPKi72VN-1687834282587)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627090650640.png)]](https://img-blog.csdnimg.cn/d614210c3ef1478e96737e885175939e.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnOiQwib-1687834282588)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627091903490.png)]](https://img-blog.csdnimg.cn/8d460d72d83641119ef294c81ff4183b.png)
2.6,查看结果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lps2nDY-1687834282588)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627085626640.png)]](https://img-blog.csdnimg.cn/c4f27f94045741dc8b93f8c42cc30a01.png)
3,发送附件
3.1,MailFileServier.java
package com.sin.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 10:03
* @description
*/
@Service
public class MailFileServier {
@Autowired(required = false)
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String userName;
/**
*
* @param to 收件人
* @param subject 邮箱标题
* @param content 邮箱内容
* @throws MessagingException
*/
public void sendMail(String to, String subject, String content, String imgName, File file) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
//邮箱发送者
helper.setFrom(userName);
//收件人,可以为多个收件人,收件人之间用逗号隔开
helper.setTo(to);
// 邮箱标题
helper.setSubject(subject);
// 邮箱内容
helper.setText(content, true);
helper.addAttachment(imgName,file);
mailSender.send(message);
}
}
3.2,MailFileController.java
package com.sin.controller;
import com.sin.service.MailFileServier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import java.io.File;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 10:05
* @description
*/
@RestController
public class MailFileController {
@Autowired
private MailFileServier mailFileServier;
@GetMapping("/sendFile")
public String sendMail() {
try {
mailFileServier.sendMail("1824368699@qq.com", "测试邮箱", "使用SpringBoot整合邮箱发送消息",
"sql作业.txt" ,new File("E:\\SQL默写.txt"));
return "邮件发送成功";
} catch (MessagingException e) {
e.printStackTrace();
return "邮件发送失败";
}
}
}
3.3,测试
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dhxq7k0b-1687834282589)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627101748001.png)]](https://img-blog.csdnimg.cn/6e7662f535f64cff8b3cc3b4c8af6b34.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gT21Ei6u-1687834282589)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627101758792.png)]](https://img-blog.csdnimg.cn/31161a09be064607a8a6dbda0a9b6396.png)
4,发送图片
4.1,MailImgServier.java
package com.sin.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 10:21
* @description
*/
@Service
public class MailImgService {
@Autowired(required = false)
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String userName;
/**
*
* @param to 收件人
* @param subject 邮箱标题
* @param content 邮箱内容
* @throws MessagingException
*/
public void sendMail(String to, String subject, String content, String imgName, FileSystemResource file) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
//邮箱发送者
helper.setFrom(userName);
//收件人,可以为多个收件人,收件人之间用逗号隔开
helper.setTo(to);
// 邮箱标题
helper.setSubject(subject);
// 邮箱内容
helper.setText(content, true);
helper.addInline(imgName,file);
mailSender.send(message);
}
}
4.2,MailImgController.java
package com.sin.controller;
import com.sin.service.MailFileServier;
import com.sin.service.MailImgService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import java.io.File;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 10:21
* @description
*/
@RestController
public class MailImgController {
@Autowired
private MailImgService mailImgServier;
@GetMapping("/sendImg")
public String sendMail() {
try {
mailImgServier.sendMail("1824368699@qq.com", "测试邮箱",
"<h1>使用SpringBoot发送图片到邮箱</h1><p>图片:</p><img src='cid:img1'/>",
"img1" ,new FileSystemResource(new File("F:\\Users\\sin\\Pictures\\2.jpg")));
return "邮件发送成功";
} catch (MessagingException e) {
e.printStackTrace();
return "邮件发送失败";
}
}
}
4.3,测试
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJ8ediqZ-1687834282589)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627100945258.png)]](https://img-blog.csdnimg.cn/34f5a769f62d41998b9d2760fd8965dc.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SY1WTNo5-1687834282590)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627103726435.png)]](https://img-blog.csdnimg.cn/75002ca5b3cd4da0b8e953b9101081aa.png)
5,随机验证码
5.1,导入thymeleaf模板
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Java提供的工具库 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>5.9</version>
</dependency>
5.2,application.yml
## thymeleaf模板设置
spring:
thymeleaf:
prefix: classpath:/templates/
suffix: .html
mode: HTML
encoding: utf-8
servlet.content-type: text/html
check-template-location: true #检查模板路径是否存在
cache: false
5.3,RandomCodeUtil.java
package com.sin.util;
import org.apache.commons.lang5.RandomStringUtils;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 9:26
* @description 生成随机验证码
* 使用了Apache Commons Lang库中的RandomStringUtils类来生成随机数字字符串。
*/
public class RandomCodeUtil {
public static String generateCode(int length){
return RandomStringUtils.randomNumeric(length);
}
}
5.4,EmailCodeService.java
package com.sin.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 9:29
* @description
*/
@Service
public class EmailCodeService {
@Autowired(required = false)
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String userName;
public void sendSimpleMessage(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
//邮箱发送者
message.setFrom(userName);
//收件人,可以为多个收件人,收件人之间用逗号隔开
message.setTo(to);
// 邮箱标题
message.setSubject(subject);
// 邮箱内容
message.setText(text);
mailSender.send(message);
}
}
5.5,EmailCodeController.java
package com.sin.controller;
import com.sin.service.EmailCodeService;
import com.sin.util.RandomCodeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @CreateName SIN
* @CreateDate 2023/06/27 9:30
* @description
*/
@Controller
public class EmailCodeController {
@Autowired
private EmailCodeService emailCodeService;
@GetMapping("/login")
public String home(Model model) {
// 生成6位随意验证码
String code = RandomCodeUtil.generateCode(6);
emailCodeService.sendSimpleMessage("1824368699@qq.com", "验证码", code);
model.addAttribute("code", code);
return "login.html";
}
}
5.6,测试
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f5SnqS5d-1687834282590)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627095443438.png)]](https://img-blog.csdnimg.cn/10cc64677e194c3abc8e0f85edbf3079.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8YWPyhNN-1687834282590)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627095423170.png)]](https://img-blog.csdnimg.cn/1f5fa6bfb9474d098013b293cf0a01bf.png)
6,随机验证码登录
未完继续!!!!
![Just KNIME it [S2C13] 机器学习的可解释性](https://img-blog.csdnimg.cn/img_convert/c3b622d9f56fe851b866618972564bba.png)


















