Files
core/docs/EMAIL_TEMPLATES.md
赵忠林 8529a826d7 feat(auth): 实现扫码登录功能并优化邮件模板
- 新增 QrLoginController、QrLoginService、QrLoginData等类实现扫码登录功能
- 更新邮件模板中的公司名称、网址等信息
- 添加 JWT 配置项
- 优化应用配置文件,启用 Jackson 对 Java 8 时间类型的支持
2025-09-01 11:32:01 +08:00

4.8 KiB
Raw Permalink Blame History

WebSoft 邮件模板系统

概述

WebSoft 邮件模板系统提供了一套专业的HTML邮件模板用于提升企业品牌影响力和用户体验。系统采用Beetl模板引擎支持动态数据绑定和响应式设计。

模板列表

1. 注册成功邮件 (register-success.html)

  • 用途: 用户注册成功后发送的欢迎邮件
  • 特点:
    • 专业的品牌展示
    • 账号信息展示
    • 功能特性介绍
    • 安全提醒
  • 变量:
    • username: 用户名
    • phone: 手机号
    • password: 密码
    • email: 邮箱(可选)

2. 密码重置邮件 (password-reset.html)

  • 用途: 用户密码重置后发送的通知邮件
  • 特点:
    • 安全警告设计
    • 重置信息展示
    • 安全建议
  • 变量:
    • username: 用户名
    • phone: 手机号
    • newPassword: 新密码
    • resetTime: 重置时间

3. 通用通知邮件 (notification.html)

  • 用途: 系统通知、公告等通用邮件
  • 特点:
    • 灵活的内容结构
    • 可选的操作按钮
    • 时间戳显示
  • 变量:
    • title: 邮件标题
    • content: 邮件内容
    • greeting: 问候语(可选)
    • infoMessage: 提示信息(可选)
    • actionUrl: 操作链接(可选)
    • actionText: 操作按钮文字(可选)
    • sendTime: 发送时间

使用方法

1. 直接使用EmailRecordService

@Resource
private EmailRecordService emailRecordService;

// 发送HTML邮件
Map<String, Object> data = new HashMap<>();
data.put("username", "张三");
data.put("phone", "13800138000");
data.put("password", "123456");

emailRecordService.sendHtmlEmail(
    "恭喜您的WebSoft账号已注册成功", 
    "register-success.html", 
    data, 
    new String[]{"user@example.com"}
);

2. 使用EmailTemplateUtil工具类推荐

@Resource
private EmailTemplateUtil emailTemplateUtil;

// 发送注册成功邮件
emailTemplateUtil.sendRegisterSuccessEmail(
    "张三", "13800138000", "123456", "user@example.com", 1001
);

// 发送密码重置邮件
emailTemplateUtil.sendPasswordResetEmail(
    "张三", "13800138000", "newPassword123", "user@example.com", 1001
);

// 发送通用通知邮件
emailTemplateUtil.sendNotificationEmail(
    "系统维护通知", 
    "系统将在今晚进行维护,请提前保存工作。", 
    "user@example.com", 
    1001
);

// 发送带操作按钮的通知邮件
emailTemplateUtil.sendNotificationEmailWithAction(
    "订单状态更新", 
    "您的订单已发货", 
    "user@example.com", 
    1001,
    "https://websoft.top/orders/12345",
    "查看订单"
);

模板特性

1. 响应式设计

  • 支持桌面和移动设备
  • 自适应屏幕尺寸
  • 优化的移动端体验

2. 品牌一致性

  • 统一的视觉风格
  • 企业Logo和品牌色彩
  • 专业的排版设计

3. 安全性

  • 密码信息安全展示
  • 安全提醒和建议
  • 防钓鱼设计

4. 用户体验

  • 清晰的信息层次
  • 明显的操作按钮
  • 友好的提示信息

自定义模板

1. 创建新模板

  1. src/main/resources/templates/ 目录下创建HTML文件
  2. 使用Beetl语法进行变量绑定
  3. 遵循现有模板的样式规范

2. Beetl语法示例

<!-- 变量输出 -->
<span>${username!}</span>

<!-- 条件判断 -->
<% if(email!) { %>
<div>邮箱:${email!}</div>
<% } %>

<!-- 循环 -->
<% for(item in items!) { %>
<li>${item.name!}</li>
<% } %>

3. 样式规范

  • 使用内联CSS确保兼容性
  • 遵循响应式设计原则
  • 保持品牌色彩一致性

配置说明

1. 邮件配置 (application.yml)

spring:
  mail:
    host: smtp.qq.com
    port: 587
    username: your-email@qq.com
    password: your-password
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true

2. 模板配置 (email-templates.yml)

  • 品牌信息配置
  • 链接地址配置
  • 样式颜色配置
  • 发送设置配置

最佳实践

1. 错误处理

  • 实现HTML邮件发送失败时的文本邮件降级
  • 记录邮件发送日志
  • 提供重试机制

2. 性能优化

  • 使用邮件队列异步发送
  • 缓存模板编译结果
  • 批量发送优化

3. 安全考虑

  • 验证收件人邮箱格式
  • 防止邮件内容注入
  • 敏感信息脱敏处理

故障排除

1. 模板不存在

  • 检查模板文件路径
  • 确认文件名拼写正确
  • 验证classpath配置

2. 变量未显示

  • 检查变量名是否正确
  • 确认数据是否传递
  • 验证Beetl语法

3. 样式问题

  • 检查CSS兼容性
  • 验证邮件客户端支持
  • 测试不同设备显示效果

更新日志

v1.0.0 (2024-08-28)

  • 初始版本发布
  • 提供注册成功、密码重置、通用通知三种模板
  • 实现EmailTemplateUtil工具类
  • 支持响应式设计和品牌定制