SendSmsComponents.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.ydtech.components.aliyun;
  2. import com.aliyun.dysmsapi20170525.Client;
  3. import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
  4. import com.aliyun.tea.TeaException;
  5. import com.aliyun.teaopenapi.models.Config;
  6. import com.aliyun.teautil.models.RuntimeOptions;
  7. import com.ydtech.exception.SystemException;
  8. import lombok.RequiredArgsConstructor;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.stereotype.Component;
  12. @Slf4j
  13. @Component
  14. @RequiredArgsConstructor
  15. public class SendSmsComponents {
  16. private final AliyunApiProperties properties;
  17. /**
  18. * @description: 创建请求
  19. * @author: wenks
  20. * @date: 2024/11/6 8:46
  21. * @return:
  22. **/
  23. private Client createClient() throws Exception {
  24. // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
  25. // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
  26. Config config = new Config()
  27. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
  28. .setAccessKeyId(properties.getAccessKeyId())
  29. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  30. .setAccessKeySecret(properties.getAccessKeySecret());
  31. // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
  32. config.endpoint = "dysmsapi.aliyuncs.com";
  33. return new Client(config);
  34. }
  35. public void sendSms(String phoneNumber, SendSmsEnum sendSmsEnum, String templateParam) throws Exception {
  36. Client client = createClient();
  37. SendSmsRequest sendSmsRequest = new SendSmsRequest()
  38. .setPhoneNumbers(phoneNumber)
  39. .setSignName(sendSmsEnum.getSignName())
  40. .setTemplateCode(sendSmsEnum.getCode())
  41. .setTemplateParam(templateParam);
  42. sendSmsData(client, sendSmsRequest);
  43. }
  44. private void sendSmsData(Client client, SendSmsRequest sendSmsRequest) {
  45. try {
  46. // 复制代码运行请自行打印 API 的返回值
  47. client.sendSms(sendSmsRequest);
  48. } catch (TeaException error) {
  49. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  50. // 错误 message
  51. log.info(error.getMessage());
  52. // 诊断地址
  53. log.info((String) error.getData().get("Recommend"));
  54. } catch (Exception _error) {
  55. TeaException error = new TeaException(_error.getMessage(), _error);
  56. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  57. // 错误 message
  58. log.info(error.getMessage());
  59. // 诊断地址
  60. log.info((String) error.getData().get("Recommend"));
  61. }
  62. }
  63. }