项目

短信发送功能

ABP框架提供了短信发送的抽象接口。采用这种抽象设计具有以下优势:

  • 您可以在不修改应用代码的情况下轻松切换短信发送服务商
  • 当需要创建可复用的应用模块时,无需对短信发送方式进行硬编码假设

安装指南

推荐使用 ABP CLI 命令行工具 安装此功能包。

使用ABP CLI安装

在项目文件夹(.csproj文件所在目录)中打开命令行窗口,输入以下命令:

abp add-package Volo.Abp.Sms

如果您尚未安装ABP CLI,请先 安装 ABP CLI 。如需了解其他安装方式,请参阅功能包详情页面

手动安装

如需手动安装:

  1. 添加Volo.Abp.Sms NuGet包到您的项目:
dotnet add package Volo.Abp.Sms
  1. 在模块的依赖列表中添加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>): 用于传递自定义参数的键值对集合

空短信发送器

NullSmsSenderISmsSender的默认实现。该实现会将短信内容写入标准日志,而非实际发送短信。

这个类在开发阶段特别有用,因为通常不需要发送真实短信。但如果您需要实际发送短信,必须在应用代码中实现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)
        {
            // 实现短信发送逻辑
        }
    }
}

扩展阅读

ABP框架提供了Twilio集成包,支持通过Twilio服务发送短信。

在本文档中