💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 短信开发/站内消息/邮件 ## 阿里短信配置 * 阿里云短信服务官方地址[https://dayu.aliyun.com/product/sms](https://dayu.aliyun.com/product/sms) * 免费开通,账户充值任意金额,按量计费 * 进入管理控制台[https://dysms.console.aliyun.com/dysms.htm](https://dysms.console.aliyun.com/dysms.htm)进行签名申请和模版管理 * 进入短信服务应用左侧“国内消息-签名管理” 添加申请签名 * 进入“模版管理”添加短信模版 * 右上角个人信息进入“AccessKey 管理”可管理获取Accesskey [https://ram.console.aliyun.com/manage/ak](https://ram.console.aliyun.com/manage/ak) * 将以上配置填入“系统配置”菜单中即可 ## 腾讯云短信配置 * 腾讯云短信服务官方地址[https://cloud.tencent.com/product/sms](https://cloud.tencent.com/product/sms) * 需提前购买短信包[https://buy.cloud.tencent.com/sms](https://buy.cloud.tencent.com/sms) * 进入管理控制台[https://console.cloud.tencent.com/smsv2](https://console.cloud.tencent.com/smsv2)进行签名申请和模版管理 * 进入短信服务应用左侧菜单“国内短信-签名管理” 添加申请签名 * 进入短信服务应用左侧菜单“应用管理-应用列表” 获取应用AppID [https://console.cloud.tencent.com/smsv2/app-manage](https://console.cloud.tencent.com/smsv2/app-manage) * 右上角个人信息进入“访问管理-API密钥管理”可管理获取AccessId与key [https://console.cloud.tencent.com/cam/capi](https://console.cloud.tencent.com/cam/capi) ## 短信开发使用 * 详见封装的工具类你还可以在此封装更简单使用的方法 ~~~ /** * 发送短信 * @param mobile 手机号 多个,逗号分隔 若为11位国内手机号无需加国家区号86 * 国际号码需加上区号 [国家或地区码][手机号] 如8109012345678、86为日本、09012345678为手机号 * @param params 参数 JSON格式,如{"code": "1234"} * 若启用腾讯短信会自动按顺序转换为逗号分隔的数组值如[1234] * @param templateCode 短信模板code/id */ public void sendSms(String mobile, String params, String templateCode) { } /** * 发送验证码 模版变量为 code 无需模版编号 * @param mobile * @param code * @param type 0通用模版 1注册 2登录 3修改手机 4修改密码 5重置密码 * @return * @throws ClientException */ public void sendCode(String mobile, String code, Integer type) { } ~~~ * 示例 ~~~ // 注入工具类 @Autowired private SmsUtil smsUtil; // getTemplate方法中0代表使用通用模版 详见代码getTemplate()方法 smsUtil.sendSms("1380000000", "{code: 1234}", smsUtil.getTemplate(0)); ~~~ ## 短信模版扩展 * 添加模版常量`SettingConstant.java`,如 ~~~ String SMS_你的模版 = "SMS_你的模版"; ~~~ * 前端`/src/views/sys/setting-manage/sms.vue`中添加新的模版选项 ~~~ <Option value="0">通用验证码</Option> ... <Option value="7">你的模版名</Option> ~~~ * 在`cn.exrick.Tceon-PERFOOT .common.sms.SmsUtil`中的`getTemplate()`方法添加设置对应`value`值代表的模版常量 * 获取用户配置的模版Code ~~~ @Autowired private SmsUtil smsUtil; // getTemplate方法中0代表使用通用模版 详见代码getTemplate()方法 smsUtil.getTemplateCode(0); ~~~ ## 短信服务商扩展 * 添加对象服务商常量`SettingConstant.java`,如 ~~~ String 你的短信服务商= "你的短信服务商"; ~~~ * 前端`/src/views/sys/setting-manage/sms.vue`中添加新的服务商选项 * 后端修改添加配置类所需相关接口(参考已有代码即可)`cn.exrick.Tceon-PERFOOT .modules.base.controller.manage.SettingController` * 后端采用工厂设计模式,需实现`cn.exrick.Tceon-PERFOOT .common.sms.Sms`接口(注意你的短信服务商实现方法中需适配相应接口参数),然后修改`cn.exrick.Tceon-PERFOOT common.sms.SmsFactory` ## 站内模版消息 * 先进入消息管理添加一条模版消息并在系统代码中记录其ID,参考`cn.exrick.Tceon-PERFOOT .common.constant.ActivitiConstant`。消息变量以`${}`包裹。 ![](https://img.kancloud.cn/a9/c3/a9c3a535e26b2dc3b2a97f4cc9959c18_1748x924.png) * 发送消息使用消息发送接口类`cn.exrick.Tceon-PERFOOT .modules.base.service.MessageSendService` ~~~ /** * 获得填充变量后的消息 * @param messageId 消息ID * @param params 消息模版变量参数 * @return */ Message getTemplateMessage(String messageId, Map<String, String> params); /** * 发送模版消息 * @param userIds 发送用户 * @param messageId 消息ID * @param params 消息模版变量参数 */ void sendTemplateMessage(List<String> userIds, String messageId, Map<String, String> params); /** * 发送模版消息 * @param userId 发送给单个用户 * @param messageId 消息ID * @param params 消息模版变量参数 */ void sendTemplateMessage(String userId, String messageId, Map<String, String> params); ~~~ * 示例 ~~~ // 注入 @Autowired private MessageSendService messageSendService; // 替换变量code为值1234 Map<String, String> params = new HashMap<>(); params.put("code", "1234"); messageSendService.sendTemplateMessage("发送的用户ID", "消息模版的ID", params); ~~~ ## 邮件发送 * 在`src/main/resources/templates`目录下放置你的HTML邮件模版,模版引擎使用`Thymeleaf`,变量等使用方式参考已有代码 * 发送邮件方法 ~~~ // 注入邮件工具类 @Autowired private EmailUtil emailUtil; /** * 异步发送邮件 * @param sendTo 接收者邮箱 * @param title 邮件标题 * @param templateName 邮件模板 * @param variables 模板替换变量Map */ public void sendTemplateEmailByMap(String sendTo, String title, String templateName, Map<String, Object> variables) { sendTemplateEmail(sendTo, title, templateName, variables, null); } /** * 异步发送邮件 * @param sendTo 接收者邮箱 * @param title 邮件标题 * @param templateName 邮件模板 * @param o 模板替换对象 */ public void sendTemplateEmail(String sendTo, String title, String templateName, Object o) { sendTemplateEmail(sendTo, title, templateName, null, o); } ~~~