赞
踩
打开 QQ 邮箱:https://mail.qq.com/
开启 SMTP 服务:
发送短信:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
spring:
mail:
# 配置 SMTP 服务器地址
host: smtp.qq.com
# 发送者邮箱
username: 2332499243@qq.com
# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码
password: zwvttumyijxweaej
# 端口号465或587
port: 587
# 默认的邮件编码为UTF-8
default-encoding: UTF-8
@Component @Slf4j public class EmailUtils { @Autowired JavaMailSender javaMailSender; @Value("${spring.mail.username}") String username; public void sendHtml(String title, String html, String to) { MimeMessage mailMessage = javaMailSender.createMimeMessage(); //需要借助Helper类 MimeMessageHelper helper = new MimeMessageHelper(mailMessage); try { helper.setFrom(username); // 必填 helper.setTo(to); // 必填 // helper.setBcc("密送人"); // 选填 helper.setSubject(title); // 必填 helper.setSentDate(new Date());//发送时间 helper.setText(html, true); // 必填 第一个参数要发送的内容,第二个参数是不是Html格式。 javaMailSender.send(mailMessage); } catch (MessagingException e) { log.error("发送邮件失败", e); } } }
// key 是 code, value 是 当前的时间戳 private static final Map<String, Long> CODE_MAP = new ConcurrentHashMap<>(); private static final long TIME_IN_MS5 = 5 * 60 * 1000; // 表示 5 分钟的毫秒数 @Autowired EmailUtils emailUtils; @Override public void sendEmail(String email, String type) { String code = RandomUtil.randomNumbers(6); log.info("本次验证的 code 是 : {}", code); String context = "<b>尊敬的用户:</b><br><br><br> 您好," + "Partner交友网提醒您本次的验证码是:<b>{}</b>," + "有效期5分钟。<br><br><br><b>Partner交友网</b>"; String html = StrUtil.format(context, code); // 校验邮箱是否已注册 User user = getOne(new QueryWrapper<User>().eq("email", email)); if ("REGISTER".equals(type)) { // 无需权限验证即可发送邮箱验证码 if (user != null) { throw new ServiceException("邮箱已注册"); } } ThreadUtil.execAsync(() -> { // 多线程执行异步请求 emailUtils.sendHtml("Partner 交友网 验证提醒", html, email); }); CODE_MAP.put(code, System.currentTimeMillis()); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。