wxd 1 year ago
parent
commit
56d640d064
  1. 6
      src/Shentun.Sms.HttpApi.Host/appsettings.json
  2. 1
      src/Shentun.Sms.Service/Shentun.Sms.Service.csproj
  3. 98
      src/Shentun.Sms.Service/Sms/AliyunSms.cs
  4. 1
      src/Shentun.Sms.Service/Sms/SmsBase.cs

6
src/Shentun.Sms.HttpApi.Host/appsettings.json

@ -48,6 +48,12 @@
"SignName": "长沙神豚科技", //
"TemplateId": "785039", //ID
"Timeout": 60 //
},
"AliyunSms": {
"AccessKeyId": "AKIDvhbVOG0rhpvxw2z6AGQiBa3jQsIc1U4d",
"AccessKeySecret": "7gP5Z7mZN0Pgpqlkp07722zrbO7k9lSA",
"SignName": "",
"TemplateCode": ""
}

1
src/Shentun.Sms.Service/Shentun.Sms.Service.csproj

@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.2" />

98
src/Shentun.Sms.Service/Sms/AliyunSms.cs

@ -0,0 +1,98 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TencentCloud.Common.Profile;
using TencentCloud.Common;
using Tea;
using Tea.Utils;
namespace Shentun.Sms.Service.Sms
{
public class AliyunSms : SmsBase
{
private readonly IConfiguration _aliyunSmsConfig;
private readonly ILogger<AliyunSms> _logger;
public AliyunSms(
IConfiguration aliyunSmsConfig,
ILogger<AliyunSms> logger)
{
_aliyunSmsConfig = aliyunSmsConfig;
_logger = logger;
}
/// <summary>
///
/// </summary>
/// <param name="phoneNumbers">手机号前+86</param>
/// <param name="templateParam"></param>
public override void Send(string[] phoneNumbers, string[] templateParam)
{
AlibabaCloud.SDK.Dysmsapi20170525.Client client = CreateClient();
AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest sendSmsRequest = new AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest
{
PhoneNumbers = phoneNumbers[0],
SignName = _aliyunSmsConfig["AliyunSms:SignName"],
TemplateCode = _aliyunSmsConfig["AliyunSms:TemplateCode"],
TemplateParam = "{\"codestr\":\"2222\"}"
};
try
{
// 复制代码运行请自行打印 API 的返回值
var msg = client.SendSmsWithOptions(sendSmsRequest, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
_logger.LogInformation($"------短信发送记录=>{AlibabaCloud.TeaUtil.Common.AssertAsString(msg)}------当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
catch (TeaException error)
{
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
Console.WriteLine(error.Message);
// 诊断地址
Console.WriteLine(error.Data["Recommend"]);
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
Console.WriteLine(error.Message);
// 诊断地址
Console.WriteLine(error.Data["Recommend"]);
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
}
/**
* 使AK&SK初始化账号Client
* @return Client
* @throws Exception
*/
public AlibabaCloud.SDK.Dysmsapi20170525.Client CreateClient()
{
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378671.html。
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
{
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
AccessKeyId = _aliyunSmsConfig["AliyunSms:AccessKeyId"],
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
AccessKeySecret = _aliyunSmsConfig["AliyunSms:AccessKeySecret"]
};
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
config.Endpoint = "dysmsapi.aliyuncs.com";
return new AlibabaCloud.SDK.Dysmsapi20170525.Client(config);
}
}
}

1
src/Shentun.Sms.Service/Sms/SmsBase.cs

@ -14,5 +14,6 @@ namespace Shentun.Sms.Service.Sms
/// <param name="phoneNumbers">手机号码</param>
/// <param name="templateParam">模板参数,跟模板ID对应的参数个数要一致</param>
public abstract void Send(string[] phoneNumbers, string[] templateParam);
}
}
Loading…
Cancel
Save