SpringBoot整合Mail发送邮件功能

网友投稿 1166 2022-11-23

SpringBoot整合Mail发送邮件功能

SpringBoot整合Mail发送邮件功能

目录前言Maven依赖使用QQ邮箱演示发送普通邮件验证码案例

前言

我们在网站上注册账号的时候一般需要获取验证码,而这个验证码一般发送在你的手机号上还有的是发送在你的邮箱中,注册,账号密码…都需要用到验证,今天就演示一下如何用SpringBoot整合Mail发送邮箱。

Maven依赖

org.springframework.boot

spring-boot-starter-mail

使用QQ邮箱演示

国内QQ邮箱的用户占多数,所以本文以QQ邮箱作为演示。

使用QQ邮箱需要开启SMTP服务

QQ邮箱默认关闭了SMTP服务,所以需要我们手动打开:

配置application.properties/yml

# 应用服务 WEB 访问端口

server.port=8080

# 邮箱用户名

spring.mail.username=your mail

# 授权码

spring.mail.password=授权码

# 邮箱主机

spring.mail.host=smtp.qq.com

# 开启SSL

spring.mail.properties.mail.smtp.ssl.enable=true

# 认证

spring.mail.properties.mail.smtp.auth=true

# 开启SSL安全模式

spring.mail.properties.mail.smtp.starttls.enable=true

# 必须启动SSL安全模式

spring.mail.properties.mail.smtp.starttls.required=true

# SSL Config

# 端口

spring.mail.port=465

# 协议

spring.mail.protocol=smtp

# 默认编码

spring.mail.default-encoding=UTF-8

# 套接字工厂端口

spring.mail.properties.mail.smtp.socketFactory.port=465

# 套接字工厂类

spring.mail.properties.mail.smtp.socketFactory.class=javax-.ssl.SSLSocketFactory

配置好这些后,springboot会自动帮我们配置好相关的邮件发送类。

发送普通邮件

@SpringBootTest

class Demo1ApplicationTests {

@Autowired

JavaMailSender javaMailSender;

@Test

public void sendSimpleMail() {

// 构建一个邮件对象

SimpleMailMessage message = new SimpleMailMessage();

// 设置邮件主题

message.setSubject("这是一封测试邮件");

// 设置邮件发送者,这个跟application.yml中设置的要一致

message.setFrom("1926585708@qq.com");

// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似

// message.setTo("1*****@qq.com","2*****qq.com");

message.setTo("1926585708@qq.com");

// 设置邮件发送日期

message.setSentDate(new Date());

// 设置邮件的正文

message.setText("这是测试邮件的正文");

// 发送邮件

javaMailSender.send(message);

}

}

查看邮箱:

验证码案例

使用thymeleaf模板搭建HTML页面

请输入您的邮箱:

验证码:


效果:

定义Controller:

/**

* 邮箱验证码

*/

@Controller

public class MailCodeController {

@Autowired

MailUtils mailUtils;

/**

* 验证页面

*

*/

@RequestMapping("/login")

public String login(){

return "login";

}

/**

* 获取验证码

* @param mail

* @return

*/

@PostMapping("/getmailcode")

@ResponseBody

public String getMailCode(String mail, HttpSession session){

String mailCode = this.mailUtils.getMailCode(mail);

System.out.println("获取到验证码:"+mailCode);

session.setAttribute("code",mailCode);

return "ok";

}

/**

* 检查验证码

* @param code

* @return 1:正确 0:错误

*/

@PostMapping("/checkCode")

@ResponseBody

public String checkCode(String code, HttpSession session){

String checkCode = (String) session.getAttribute("code");

if (checkCode!=null){

if (code.equals(checkCode)){

return "1";

}else {

return "0";

}

}

return "0";

}

}

MailUtils邮箱工具类:

@Component

public class MailUtils {

@Autowired

private JavaMailSender mailSender;

public String getMailCode(String mail){

Random random = new Random();

String code="";

for (int i=0;i<6;i++)

{

code+=random.nextInt(10);

}

//邮件设置1:一个简单的邮件

SimpleMailMessage message = new SimpleMailMessage();

message.setSubject("验证码消息");

message.setText("您的验证码为 : 【 "+code+" 】");

message.setTo(mail);

message.setFrom("1926585708@qq.com");

mailSender.send(message);

return code;

}

}

验证效果:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:github 那些不容错过的资料仓库
下一篇:Shell 日志与打印输出
相关文章

 发表评论

暂时没有评论,来抢沙发吧~