当前位置: 首页 > news >正文

邮件登录之自定义邮件

邮件登录之自定义邮件

上一篇我们分享了如何实现联系qq邮箱来实现验证码登录,这里接上回的自定义邮件功能。

一、依赖

添加模板引擎依赖:

<!-- Thymeleaf 模板引擎 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

二、工具类的改造


@Component
public class MailUtil {@Autowiredprivate JavaMailSender mailSender;@Autowiredprivate TemplateEngine templateEngine;@Value("${spring.mail.username}")private String from;public void sendVerificationMail(String to, String code) {try {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");helper.setFrom(new InternetAddress(from, "验证中心", "UTF-8"));helper.setTo(to);helper.setSubject("登录验证码");// 填充模板变量Context context = new Context();context.setVariable("code", code);String html = templateEngine.process("mail", context);helper.setText(html, true);// 添加嵌入资源(logo + 背景)helper.addInline("logo", new ClassPathResource("templates/images/logo.png"));mailSender.send(message);} catch (IOException e) {System.err.println("资源文件路径错误!");e.printStackTrace();} catch (Exception e) {System.err.println(" 邮件发送失败!");e.printStackTrace();}}
}

三、控制器的改造

@GetMapping("/sendCode")
public String sendCode(@RequestParam String email) {String key = "login:code:" + email;String cooldownKey = "login:cooldown:" + email;// 生成验证码String code = String.valueOf(100000 + new Random().nextInt(900000));if (Boolean.TRUE.equals(redisTemplate.hasKey(cooldownKey))) {return "发送过于频繁,请稍后再试。";}// 检查 Redis 中是否已有未过期验证码if (Boolean.TRUE.equals(redisTemplate.hasKey(key))) {return "验证码未过期,请检查您的邮箱。";}redisTemplate.opsForValue().set(cooldownKey, "1", 60, TimeUnit.SECONDS);try {// 发送邮件mailUtil.sendVerificationMail(email, code);// 邮件发送成功后再写入 RedisredisTemplate.opsForValue().set(key, code, 5, TimeUnit.MINUTES);} catch (Exception e) {e.printStackTrace();return "邮件发送失败,请稍后重试。";}return "验证码已发送到 " + email;
}

四、创建html文件

在html标签中:

<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">

创建src/main/resources/templates/mail.html  文件

Mail 文件直接写 html的样式 资源路径这样实现:

<img src="cid:logo" class="logo" alt="CY-Fang Logo">

验证码这样实现:

<p class="code" th:text="${code}">123456</p>

需要注意的是邮箱对一些html的某些功能支持很少,也就是说在浏览器中的样式可能会在某些邮箱中无法显示,,,,然后要注意下响应式布局。。

如此,再次发送验证码时,邮件就会显示为我们想要的样式。。

http://www.dtcms.com/a/562874.html

相关文章:

  • 唐山建网站公司wordpress文章分段
  • 镇江建设银行网站网站搜索防止攻击
  • 网站运营与建设做信公众号首图的网站
  • 公司产品网站应该怎么做企业服务中心工作内容
  • 性倒错概述!
  • 汽车销售在哪些网站做推广seo关键词如何设置
  • 【Linux】Linux权限讲解 :写给文件的一封情书
  • 沈阳开发网站公司广告店
  • 南阳高端网站建设怎么制作古装视频
  • 网站建设公司长春wordpress 广州
  • 湖北 网站建设wordpress后台登陆界面
  • 电子商务网站建设调查问卷网站职业技术培训学校
  • 婚庆行业网站建设各大免费推广网站
  • 织梦网站演示苏州住房与城乡建设网站
  • 服装网站开发方案广告片制作哪家好
  • 天津建站管理系统价格湛江建站价格
  • 计算机毕业设计java和Vue的安全教育科普平台设计与实现 安全知识普及与教育平台 安全教育信息化管理平台
  • ppt网站建设的目的站长之家怎么用
  • 做网站 是不是懂ps企业宣传片背景音乐
  • 网站仿造学电子商务后悔了
  • 模型融合文章WUDI-Merging ICML2025
  • 什么网站可以找人做软件下载建盏大师排名表及落款
  • 【办公类-122-01】20251102QQ音乐ogg转MP3(格式工厂,Python需要装ffmepg)
  • 做网站首页代码泰安网站建设渠道
  • 做淘宝电商比较厉害的网站怎么做cpa网站
  • 电话销售做网站城市管理如何宣传市建设网站
  • 在中国做外国网站怎么收钱友情链接如何交换
  • 沐众科技网站建设seo外链发布
  • 快速建站完整版策划网站设计
  • 网站服务器到期了怎么续费中国交通建设股份有限公司官网