赞
踩
一、maven导入依赖
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.4.7</version>
- </dependency>
二、配置yml文件配置
- spring:
- mail:
- host: smtp.qq.com
- username: XXXXX@qq.com
- password: //这里的密码并不是邮箱密码,而是需要开启POP3/IMAP/SMTP/Exchange/CardDAV 服务
- port: 587 //端口号
- default-encoding: UTF-8
- properties:
- mail:
- smtp:
- socketFactoryClass: javax.net.ssl.SSLSocketFactory
- debug: true
三、以qq邮箱为例开启POP3/IMAP/SMTP/Exchange/CardDAV 服务
进入qq邮箱点击设置->账户,如下图:
下滑看到POP3/IMAP/SMTP/Exchange/CardDAV 服务,点击开启,如下图:
通过绑定的手机进行验证,会得到一串字符串,将该字符串复制到配置文件的password后即可。注:开启服务并不是永久有效,在一定时间后程序报错,是因为时效过期,需重新申请。
三、发送邮箱验证码代码实现
发生文本邮箱:
- public void sendSimpleMail(String code,String touser) {
- // 构建一个邮件对象
- SimpleMailMessage message = new SimpleMailMessage();
- // 设置邮件主题
- message.setSubject("邮箱注册码");
- // 设置邮件发送者,这个跟application.yml中设置的要一致 username:
- message.setFrom(username);
- // 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
- // message.setTo("10@qq.com","12qq.com");
- message.setTo(touser);
- // 设置邮件发送日期
- message.setSentDate(new Date());
- // 设置邮件的正文
- message.setText("邮箱注册码:" + code);
- // 发送邮件
- javaMailSender.send(message);
- }
调用方法
- @ResponseBody
- @PostMapping(value = "/sendCode")
- @CrossOrigin
- public Response sendCode(@RequestParam String touser, HttpServletRequest request) {
- try {
- int code = (int)((Math.random()*9+1)*1000);
- sendSimpleMail(code+"",touser);
- return Response.success(code);
- } catch (Exception e) {
- return Response.error();
- }
- }
四、说明
一般邮箱验证码有时效性,后续注册账户时,生成的验证码需使用redis保存,并设置时效性。后续用户点击注册时,从redis中去拿验证码去校验即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。