2026/4/15 12:45:10
网站建设
项目流程
中企潍坊分公司网站,wordpress 简书 比较,资料大全正版资料,济南机关建设网站大家好#xff0c;我是小悟。
在SpringBoot项目中集成阿里云短信服务#xff0c;核心是完成一系列前置申请#xff0c;并调用其官方SDK发送短信。整个流程从前置准备到代码集成#xff0c;步骤清晰。
阿里云短信服务概述
阿里云短信服务提供高并发、安全的全球短信发送能…大家好我是小悟。在SpringBoot项目中集成阿里云短信服务核心是完成一系列前置申请并调用其官方SDK发送短信。整个流程从前置准备到代码集成步骤清晰。阿里云短信服务概述阿里云短信服务提供高并发、安全的全球短信发送能力支持验证码、通知、营销等场景。其主要特点如下特性维度具体说明核心能力提供三网合一通道秒级可达支持国内及全球200多个国家/地区。安全与管控基于阿里云账户与RAM权限管理支持设置日发送量上限、单用户频次阈值并具备验证码防盗刷监控。计费模式采用短信套餐包优先抵扣超出后按量计费的模式。国内验证码/通知短信低至0.045元/条起。使用限制仅支持企业认证账号发送前需完成资质、签名、模板的申请与审核对发送频率有严格限制例如验证码同一号码最多1条/分钟。集成前必须完成的控制台配置编写代码前你必须在阿里云控制台完成一系列配置这是短信发送的前提。开通服务与购买资源包完成企业实名认证并登录短信服务控制台开通服务。根据业务需要国内或国际购买短信套餐包。创建AccessKey为安全起见建议为应用创建RAM子用户并授权AliyunDysmsFullAccess策略。为该子用户创建AccessKeyAccessKey ID和AccessKey Secret后续代码将使用它调用API。切勿直接使用主账号的AccessKey。申请短信签名与模板签名在“国内消息”或“国际/港澳台消息”菜单下申请。签名是显示在短信开头的标识如【企业名称】用于标识发送方。审核通常需2小时。模板短信内容模板支持变量。例如验证码模板“您的验证码为${code}5分钟内有效。”模板审核同样约需2小时。重要提示签名和模板均审核通过后方可使用。国内签名还需完成运营商实名报备需7-15个工作日报备成功前发送可能失败。SpringBoot项目集成详细步骤完成控制台配置后即可在SpringBoot项目中集成。第1步添加Maven依赖在项目的pom.xml中添加阿里云短信服务SDK的依赖。dependency groupIdcom.aliyun/groupId artifactIddysmsapi20180501/artifactId version2.0.24/version !-- 请使用Maven仓库中的最新版本 -- /dependency第2步配置应用参数在application.yml或application.properties中配置必要的参数。# application.yml 配置示例 aliyun: sms: # 从控制台获取的AccessKey信息 access-key-id: your-access-key-id access-key-secret: your-access-key-secret # 短信服务接入点Endpoint国内一般为 dysmsapi.aliyuncs.com endpoint: dysmsapi.aliyuncs.com # 控制台申请并通过审核的签名名称无需加【】 sign-name: 你的签名 # 控制台申请并通过审核的模板CODE template-code: SMS_123456789第3步创建配置类与Service创建一个配置类来初始化SDK客户端并编写发送短信的服务类。import com.aliyun.dysmsapi20180501.Client; import com.aliyun.teaopenapi.models.Config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; Configuration public class AliyunSmsConfig { Value(${aliyun.sms.access-key-id}) private String accessKeyId; Value(${aliyun.sms.access-key-secret}) private String accessKeySecret; Value(${aliyun.sms.endpoint}) private String endpoint; /** * 创建并返回阿里云短信服务的Client实例。 * 该Bean可用于整个Spring容器。 */ Bean public Client createClient() throws Exception { Config config new Config() .setAccessKeyId(accessKeyId) .setAccessKeySecret(accessKeySecret); config.endpoint endpoint; return new Client(config); } }import com.aliyun.dysmsapi20180501.Client; import com.aliyun.dysmsapi20180501.models.SendMessageWithTemplateRequest; import com.aliyun.dysmsapi20180501.models.SendMessageWithTemplateResponse; import com.aliyun.teautil.models.RuntimeOptions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; Service public class SmsService { Autowired private Client smsClient; Value(${aliyun.sms.sign-name}) private String signName; Value(${aliyun.sms.template-code}) private String templateCode; /** * 发送短信验证码 * param phoneNumber 目标手机号国内号码需带国际区号86 * param templateParam 模板变量对应的JSON字符串如{code:123456} * return 是否发送成功 */ public boolean sendSms(String phoneNumber, String templateParam) { try { SendMessageWithTemplateRequest request new SendMessageWithTemplateRequest() .setTo(phoneNumber) // 接收方手机号 .setSignName(signName) // 短信签名 .setTemplateCode(templateCode) // 短信模板CODE .setTemplateParam(templateParam); // 模板变量JSON RuntimeOptions runtime new RuntimeOptions(); SendMessageWithTemplateResponse response smsClient.sendMessageWithTemplateWithOptions(request, runtime); // 根据响应判断是否成功OK表示成功[citation:4] return OK.equals(response.getBody().getResponseCode()); } catch (Exception e) { // 此处应记录日志并根据业务需要进行异常处理 e.printStackTrace(); return false; } } }第4步在Controller中调用创建一个简单的控制器来提供发送短信的HTTP接口。import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; RestController public class SmsController { Autowired private SmsService smsService; GetMapping(/sendCode) public String sendVerificationCode(RequestParam String phone) { // 生成随机验证码示例 String code String.valueOf((int)((Math.random() * 9 1) * 100000)); // 构造模板参数必须与申请模板时的变量名一致 String templateParam {\code\:\ code \}; boolean isSuccess smsService.sendSms(phone, templateParam); if (isSuccess) { // 在实际业务中此处应将验证码与手机号关联并存入缓存如Redis设置有效期 return 验证码发送成功; } else { return 验证码发送失败请稍后重试。; } } }总结按照上述步骤即可在SpringBoot项目中集成阿里云短信。最后有几个关键点需要注意资质与审核是关键前提务必确保使用企业认证账号并提前完成签名、模板的申请和审核。国内签名还需要等待运营商报备成功否则发送会失败。安全第一AccessKey相当于账号密码务必通过环境变量或配置服务器管理切忌硬编码在代码中提交至版本库。关注限制与成本严格遵守发送频率限制如1条/分钟/号。发送测试短信也会产生费用请注意账户余额。生产环境建议应考虑异步发送、失败重试、发送状态回执SmsReport接收等机制以提升稳定性和可靠性。谢谢你看我的文章既然看到这里了如果觉得不错随手点个赞、转发、在看三连吧感谢感谢。那我们下次再见。您的一键三连是我更新的最大动力谢谢山水有相逢来日皆可期谢谢阅读我们再会我手中的金箍棒上能通天下能探海