1. 開啟郵箱的POP3/SMTP服務。進入郵箱 > 設置 > 賬戶
2. application.properties配置郵箱
#郵件發送配置 spring.mail.default-encoding=UTF-8 spring.mail.host=smtp.qq.com spring.mail.username= 這里填發送驗證的郵箱 spring.mail.password= 這里填郵箱的那個授權碼 #配置郵箱465端口,否則本地測試可以,放到服務器上就不行 spring.mail.port=465
#這個端口有時候會出錯,添加以下ssl配置。或者把端口改為 25
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true
3.Controller
/** * 忘記密碼模塊的發送郵箱驗證碼 * 傳入郵箱即可如"toEmail":"123@qq.com" * @param httpServletRequest * @param jsonObject * @return */ @RequestMapping(value = "/send/email",method = RequestMethod.POST) @ResponseBody public CodeMsg<Object> sendEmail(HttpServletRequest httpServletRequest, @RequestBody JSONObject jsonObject){ String toEmail = jsonObject.getString("toEmail"); try { String emailCode = userService.sendEmailCode(httpServletRequest,toEmail); return new CodeMsg<>(200,"發送驗證碼完成",emailCode); } catch (Exception e) { log.error("\n####" + e.getMessage(), e); return new CodeMsg<>(500, e.getMessage(), null); } }
4.Service
1 /** 2 * 給郵箱發送驗證碼 3 * 4 * @param httpServletRequest 5 * @return 6 */ 7 @Override 8 public String sendEmailCode(HttpServletRequest httpServletRequest, String toEmail) { 9 //生成隨機驗證碼 10 String checkCode = String.valueOf(new Random().nextInt(899999) + 100000); 11 SimpleMailMessage message = new SimpleMailMessage(); 12 message.setFrom(fromEmail); 13 message.setTo(toEmail); 14 message.setSubject("這是一個郵件主題——系統郵件"); 15 message.setText("您正在修改您的密碼,本次驗證碼為:" + checkCode + "\n 如非本人操作,請忽略!謝謝"); 16 mailSender.send(message); 17 logger.info("郵件發送成功"); 18 return checkCode; 19 }