Flyinsky's Codes
514 字
3 分钟
集成Java Mail发送验证码

集成Java Mail发送验证码#

:::tip

开发web app时经常会遇到给用户发送验证码或是小广告的应用场景,今天记录一下如何在Springboot中集成Java Mail(以Outlook示例)

:::

1.添加依赖#

在pom.xml中的dependencies标签中添加以下子标签:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>

2.配置文件#

添加依赖信息后刷新maven,在application.yml中填写属性。

mail: # 配置 SMTP 服务器地址 host: smtp.office365.com # 发送者邮箱 username: xingongshuo@7jtghd.onmicrosoft.com #邮箱账号 password: password #邮箱密码 # 端口号465或587 不同邮箱服务商去官网查阅 port: 587 # 默认的邮件编码为UTF-8 default-encoding: UTF-8 properties: from: xingongshuo@7jtghd.onmicrosoft.com #发件人地址,一般与邮箱账号一致

3.使用#

完成配置后即可在需要使用到的Service中直接使用,当然为了代码简洁性建议封装一个邮件服务。

public String sendValidateEmail(String email, String sessionId) { String key = "email:" + sessionId + ":" + email; if (Boolean.TRUE.equals(template.hasKey(key))) { //if判断条件为myredis数据库中是否已存在 可忽略 return "验证码发送频繁,请稍后重试"; } if (userMapper.findUserByNameOrMail(email) != null) { return "邮箱已被注册"; } //从数据库中查询用户名或邮箱是否被占用 Random random = new Random(); int code = random.nextInt(899999) + 100000; //随机函数生成六位验证码 MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper; Properties properties = mailSender.getJavaMailProperties(); //创建邮件类 properties.put("mail.smtp.starttls.enable", "true"); //微软邮箱要求使用starttls保证安全性 try { helper = new MimeMessageHelper(message, true); helper.setFrom("xingongshuo@7jtghd.onmicrosoft.com", "AIIT|智能之翼实验室"); //设置发件人地址和发件人名称 helper.setTo(email); helper.setSubject("[AIIT|智能之翼实验室]您的验证码"); //设置邮件标题 helper.setText("欢迎来到智能之翼实验室,您的注册验证码是:" + code); //设置邮件正文 mailSender.send(message); //发送邮件 template.opsForValue().set(key, Integer.toString(code), 3, TimeUnit.MINUTES); //向redis数据库中插入刚才发送的验证码,存活时间为3分钟 return null; } catch (MessagingException e) { e.printStackTrace(); return e.getMessage(); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }

以上便是Springboot集成邮件发送的简易流程。