短信发送功能
ABP框架提供了短信发送的抽象接口。采用这种抽象设计具有以下优势:
- 您可以在不修改应用代码的情况下轻松切换短信发送服务商
- 当需要创建可复用的应用模块时,无需对短信发送方式进行硬编码假设
安装指南
推荐使用 ABP CLI 命令行工具 安装此功能包。
使用ABP CLI安装
在项目文件夹(.csproj文件所在目录)中打开命令行窗口,输入以下命令:
abp add-package Volo.Abp.Sms
如果您尚未安装ABP CLI,请先 安装 ABP CLI 。如需了解其他安装方式,请参阅功能包详情页面。
手动安装
如需手动安装:
- 添加Volo.Abp.Sms NuGet包到您的项目:
dotnet add package Volo.Abp.Sms
- 在模块的依赖列表中添加
AbpSmsModule:
[DependsOn(
//...其他依赖项
typeof(AbpSmsModule) //添加新模块依赖
)]
public class YourModule : AbpModule
{
}
发送短信
在任何服务中注入ISmsSender接口,并通过SendAsync方法发送短信。
示例代码:
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Sms;
namespace MyProject
{
public class MyService : ITransientDependency
{
private readonly ISmsSender _smsSender;
public MyService(ISmsSender smsSender)
{
_smsSender = smsSender;
}
public async Task DoItAsync()
{
await _smsSender.SendAsync(
"+012345678901", // 目标手机号码
"这是一条测试短信..." // 短信内容
);
}
}
}
示例中的SendAsync方法是使用基础参数发送短信的扩展方法。此外,您还可以传递包含以下属性的SmsMessage对象:
PhoneNumber(string): 目标手机号码Text(string): 短信正文Properties(Dictionary<string, string>): 用于传递自定义参数的键值对集合
空短信发送器
NullSmsSender是ISmsSender的默认实现。该实现会将短信内容写入标准日志,而非实际发送短信。
这个类在开发阶段特别有用,因为通常不需要发送真实短信。但如果您需要实际发送短信,必须在应用代码中实现ISmsSender接口。
实现ISmsSender接口
您可以通过创建实现ISmsSender接口的类来轻松定制短信发送逻辑,如下所示:
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.Sms;
using Volo.Abp.DependencyInjection;
namespace AbpDemo
{
public class MyCustomSmsSender : ISmsSender, ITransientDependency
{
public async Task SendAsync(SmsMessage smsMessage)
{
// 实现短信发送逻辑
}
}
}
抠丁客


