AliMessageHelper.cs 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections.Generic;
  3. using AlibabaCloud.SDK.Dysmsapi20170525;
  4. using AlibabaCloud.SDK.Dysmsapi20170525.Models;
  5. using Newtonsoft.Json;
  6. using Tea;
  7. using Wicture.DbRESTFul;
  8. namespace JiaZhiQuan.Common.AliMessage
  9. {
  10. public class AliMessageHelper
  11. {
  12. /// <summary>
  13. /// key
  14. /// </summary>
  15. public readonly static string AccessKey = "LTAI5tGReikR9NjZT17dNQb4";
  16. /// <summary>
  17. /// secret
  18. /// </summary>
  19. public readonly static string AccessSecret = "xBIM4MAoFLghCy7D7AIipiLiq7BXn8";
  20. /// <summary>
  21. /// 短信签名
  22. /// </summary>
  23. public readonly static string SignName = "欧拉鼠";
  24. /// <summary>
  25. /// 初始化aliyun客户端
  26. /// </summary>
  27. /// <param name="accessKey">key</param>
  28. /// <param name="accessKeySecret">secret</param>
  29. /// <returns></returns>
  30. public static Client CreateClient(string accessKey, string accessKeySecret)
  31. {
  32. // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
  33. // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378671.html。
  34. AlibabaCloud.OpenApiClient.Models.Config config = new()
  35. {
  36. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
  37. AccessKeyId = accessKey, //;Environment.GetEnvironmentVariable(accessKey),
  38. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  39. AccessKeySecret = accessKeySecret //Environment.GetEnvironmentVariable(accessKeySecret),
  40. };
  41. // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
  42. config.Endpoint = "dysmsapi.aliyuncs.com";
  43. return new Client(config);
  44. }
  45. /// <summary>
  46. /// 发送短信
  47. /// </summary>
  48. /// <param name="phoneNumber">手机号</param>
  49. /// <param name="template">模板</param>
  50. /// <param name="data">数据</param>
  51. /// <returns></returns>
  52. public static string SendMessage(string phoneNumber, AliMessageTemplateEnum template, string data)
  53. {
  54. Client client = CreateClient(AccessKey, AccessSecret);//填入授权码
  55. SendSmsRequest sendSmsRequest = new()
  56. {
  57. SignName = SignName,//短信签名
  58. TemplateCode = template.GetDescription(),//短信模板
  59. PhoneNumbers = phoneNumber,//手机号
  60. TemplateParam = data, //模板参数
  61. };
  62. AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new();
  63. var resMessage = string.Empty;
  64. try
  65. {
  66. // 复制代码运行请自行打印 API 的返回值
  67. var res = client.SendSmsWithOptions(sendSmsRequest, runtime);
  68. resMessage = res.Body.Message;
  69. }
  70. catch (TeaException error)
  71. {
  72. // 如有需要,请打印 error
  73. resMessage = AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  74. LoggerManager.Logger.Error($"调用阿里云发送验证码短信API失败:" + resMessage);
  75. }
  76. catch (Exception _error)
  77. {
  78. TeaException error = new TeaException(new Dictionary<string, object>
  79. {
  80. { "message", _error.Message }
  81. });
  82. // 如有需要,请打印 error
  83. resMessage = AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  84. LoggerManager.Logger.Error($"调用阿里云发送验证码短信API失败:" + resMessage);
  85. }
  86. return resMessage;
  87. }
  88. }
  89. }