mirror of https://github.com/abpframework/abp.git
csharpabpc-sharpframeworkblazoraspnet-coredotnet-coreaspnetcorearchitecturesaasdomain-driven-designangularmulti-tenancy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Branch:
TimezoneHelpText
10.0-ai-docs
2024-06-21-Use_User-Defined_Function_Mapping_For_Global_Filter
8.0-prevent-stackoverflow-blazor
8.2-landing-page
9.0-clear-breadcrumbs
BackgroundJob-ApplicationName-Test
Blazorise-Form-Submit
EngincanV-patch-1
EngincanV/maui-docs
EngincanV/modular-monolith-tutorials
EngincanV/rba-docs
EngincanV/update-leptonx-docs
EngincanV/update-tui-editor
ExtensionPropertyPolicy-Test
IApplicationConfigurationContributor
IGuidGenerator
IReadOnlyAppService
InboxProcessor-OutboxSender
InteractiveServerRenderMode(prerender-true)
Issue-#23338
LockoutEnd-Time
MaxTypeFullNameLength
Prevent-Privilege-Escalation
RandomHelper
Shared-User-Account
Testcontainers
Theme-Async
TimezoneHelpText
X509KeyStorageFlags
abp-release-post
abp-searching
abp-studio/issue/2891
abp-united-pre-merge
add-loading-component
advanced-features
article/angular-multithreading
auto-merge/prerel-8-2/2729
auto-merge/prerel-9-0/3134
auto-merge/prerel-9-0/3181
auto-merge/rel-0-0/42712
auto-merge/rel-0-0/42712-1
auto-merge/rel-10-0/4007
auto-merge/rel-10-0/4064
auto-merge/rel-10-0/4133
auto-merge/rel-10-1/4237
auto-merge/rel-7-4/2239
auto-merge/rel-7-4/2263
auto-merge/rel-7-4/2276
auto-merge/rel-8-0/2472
auto-merge/rel-8-0/2715
auto-merge/rel-8-0/2741
auto-merge/rel-8-1/2527
auto-merge/rel-8-2/2851
auto-merge/rel-8-3/3151
auto-merge/rel-9-0/3296
auto-merge/rel-9-0/3304
auto-merge/rel-9-1/3656
auto-merge/rel-9-2/3571
auto-merge/rel-9-2/3652
aws-service-url
before-net10
blazor-full-stack-web-ui-interactiveauto
blazor-full-stack-web-ui-interactiveauto-modified
clear-breadcrumbs
cmskit-cache
copilot/sub-pr-24469
copilot/sub-pr-24636
data-collection-code-review-2
data-collection-review-3
data-collection-review-5
dev
devnot-demo
dgnyldrm7-patch-1
docs-fix
docs-preview-8.3
docs-test-1
docs-unification
docs-unification-1-enhancements
docs/studio-2.1.5
document-abp-run-watch-command
document-index-backgroundjob
documentation/#20827-modular-monolith-application
documentation/#24783-hybrid-localization
documentation/20827
documentation/abp-extensible-form-doc
documentation/angular-dynamic-form-module
ebicoglu-patch-1
ebicoglu-patch-2
enisn-patch-1
enisn/blobstoring-bunnycdn
feat/#23955
feat/dynamic-form-component
feat/mudblazor
feat/mudblazor-mix
feat/typescript-on-mvc
feature/#19594
feature/#23180
feature/data-collection
feature/logo-provider
feature/ssr-migration-schematic
fix-admin-docs-test
fix/#20241
fix/#23795
fix/permission-modal-grant-all-indeterminate-state
fullstackblazor
gizem/HTML-encode-TagHelper-xss-test
gizem/security-logs
halil-presentation-2024-05
hybrid-ui
hybrid-ui-embedding
ingress-nginx/ingress-nginx
issue-#23231
issue-#3417
issue-#3591
issue-#3596
issue-#6679
issue-#6768
issue-18421
issue-19307
issue-20436
issue-20924-2
issue-21015
issue-22408
issue-23113
issue-23231
issue-23231-v2
issue-23286
issue-24272
issue-24438-test
issue-24635-test
issue-24672
issue-24673
issue-24674
issue-24674-2
issue-24714
issue-2884
issue-3384/L
issue-3596
issue-3870/L
issue-5131
issue-5384
issue-volo-21285
issue-vs-7809
issue/22675
issue/abp-ng-upgrade
issue/assign-available-port-for-suite
issue/cms-kit-angular
issue/updateAngularInstallers
jquery-form
leptonx-versions
license-banner-localization
license-banner-localization-1
local-ref-basic-theme
maliming-patch-1
maliming-patch-2
maliming-patch-4
maliming/ParameterApiDescriptionModel
maliming/ShouldValidatePredicates
mansur-vs-internal-#7864
mauiglobalbundle
migrating-abp-packages/core
migrating-abp-packages/identity
migrating-abp-packages/setting-management
migrating-abp-packages/tenant-management
migrating-abp-packages/theme-shared
oauth2-redirect.html
pr/2526
pr/6814
prerel-9.0
rc-tests
rel-1.0
rel-1.1
rel-10.0
rel-10.1
rel-2.0
rel-2.1
rel-2.2
rel-2.3
rel-2.4
rel-2.5
rel-2.6
rel-2.7
rel-2.8
rel-2.9
rel-3.0
rel-3.1
rel-3.2
rel-3.3
rel-4.0
rel-4.1
rel-4.2
rel-4.3
rel-4.4
rel-5.0
rel-5.1
rel-5.2
rel-5.3
rel-6.0
rel-7.0
rel-7.1
rel-7.2
rel-7.3
rel-7.4
rel-8.0
rel-8.1
rel-8.2
rel-8.3
rel-9.0
rel-9.1
rel-9.2
rel-9.3
remove-deprecateds
return-code-vs-exception-article
revert-18876-blazor-full-stack-web-ui
revert-20264-EngincanV/cli-old-vs-new
revert-23436-Mapperly-maliming
salihozkara-patch-1
salihozkara-patch-2
salihozkara/ImproveBundleFile
salihozkara/blazorise-validation-message
salihozkara/complex-property
salihozkara/fix-image
salihozkara/fixDatePicker
salihozkara/mapperly-test
skoc10-patch-1
social-login-usages
studio-custom-command-doc
studio-document-start-and-wait
template-config-provider
templates-version
test-branch-24299
update-bundle
update-cli-docs
update-doc
update-latest-versions-7.4.3
update-latest-versions-8.1.2
update-latest-versions-8.1.5
update-latest-versions-8.2.3
update-latest-versions-9.0.7
update-latest-versions-9.1.0
update-upgrade-cod-23-08-2024
upgrade-command-doc
vsInternal-viewcChangeHistory-localization
vsinternal-7565
zh-hans.json
ìssue-17361
0.10.0
0.11.0
0.12.0
0.13.0
0.14.0
0.15.0
0.16.0
0.17.0.0
0.18.0
0.18.1
0.19.0
0.20.0
0.20.1
0.21.0
0.22.0
0.3.7
0.4.0
0.4.1
0.4.1.1
0.5.0
0.6.0
0.6.1
0.7.0
0.7.1
0.8.0
0.9.0
1.0.0
1.0.2
1.1.0
1.1.1
1.1.2
10.0.0
10.0.0-rc.1
10.0.0-rc.2
10.0.0-rc.3
10.0.1
10.0.2
10.0.3
10.1.0-rc.1
10.1.0-rc.2
2.0.0
2.0.1
2.1.0
2.1.1
2.2.0
2.2.1
2.3
2.3.0
2.4.0
2.4.1
2.5.0
2.6.0
2.6.1
2.6.2
2.7.0
2.8.0
2.9.0
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.1.0
3.1.0-rc.1
3.1.0-rc.2
3.1.0-rc.3
3.1.0-rc.4
3.1.1
3.1.2
3.2.0
3.2.0-rc.1
3.2.0-rc.2
3.2.1
3.3.0
3.3.0-rc.1
3.3.0-rc.2
3.3.1
3.3.2
4.0.0
4.0.0-rc.1
4.0.0-rc.2
4.0.0-rc.3
4.0.0-rc.4
4.0.0-rc.5
4.0.1
4.0.2
4.1.0
4.1.0-rc.1
4.1.0-rc.2
4.1.1
4.1.2
4.2.0
4.2.0-rc.1
4.2.0-rc.2
4.2.1
4.2.2
4.3.0
4.3.0-rc.1
4.3.0-rc.2
4.3.1
4.3.2
4.3.3
4.4.0
4.4.0-rc.1
4.4.0-rc.2
4.4.1
4.4.2
4.4.3
4.4.4
5.0.0
5.0.0-beta.1
5.0.0-beta.2
5.0.0-beta.3
5.0.0-rc.1
5.0.0-rc.2
5.0.1
5.0.2
5.1.0
5.1.1
5.1.2
5.1.3
5.1.4
5.2.0
5.2.0-rc.1
5.2.0-rc.2
5.2.1
5.2.2
5.3.0
5.3.0-rc.1
5.3.0-rc.2
5.3.0-rc.3
5.3.1
5.3.2
5.3.3
5.3.4
5.3.5
6.0.0
6.0.0-rc.1
6.0.0-rc.2
6.0.0-rc.3
6.0.0-rc.4
6.0.0-rc.5
6.0.1
6.0.2
6.0.3
7.0.0
7.0.0-rc.1
7.0.0-rc.2
7.0.0-rc.3
7.0.0-rc.4
7.0.0-rc.5
7.0.0-rc.6
7.0.1
7.0.2
7.0.3
7.1.0
7.1.0-rc.1
7.1.0-rc.2
7.1.0-rc.3
7.1.1
7.2.0-rc.1
7.2.0-rc.2
7.2.1
7.2.2
7.2.3
7.3.0
7.3.0-rc.1
7.3.0-rc.2
7.3.0-rc.3
7.3.1
7.3.2
7.3.3
7.4.0
7.4.0-rc.1
7.4.0-rc.2
7.4.0-rc.3
7.4.0-rc.4
7.4.0-rc.5
7.4.1
7.4.2
7.4.3
7.4.4
7.4.5
8.0.0
8.0.0-rc.1
8.0.0-rc.2
8.0.0-rc.3
8.0.1
8.0.2
8.0.3
8.0.4
8.0.5
8.0.6
8.1.0
8.1.0-rc.1
8.1.0-rc.2
8.1.0-rc.3
8.1.0-rc.4
8.1.1
8.1.2
8.1.3
8.1.4
8.1.5
8.2.0
8.2.0-rc.1
8.2.0-rc.2
8.2.0-rc.3
8.2.0-rc.4
8.2.0-rc.5
8.2.1
8.2.2
8.2.3
8.3.0
8.3.0-rc.1
8.3.0-rc.2
8.3.0-rc.3
8.3.1
8.3.2
8.3.3
8.3.4
9.0.0
9.0.0-rc.1
9.0.0-rc.2
9.0.0-rc.3
9.0.1
9.0.2
9.0.3
9.0.4
9.0.5
9.0.6
9.0.7
9.0.8
9.1.0
9.1.0-rc.1
9.1.0-rc.2
9.1.0-rc.3
9.1.1
9.1.2
9.1.3
9.2.0
9.2.0-rc.1
9.2.0-rc.2
9.2.0-rc.3
9.2.0-rc.4
9.2.1
9.2.2
9.2.3
9.2.4
9.3.0
9.3.0-rc.1
9.3.0-rc.2
9.3.0-rc.3
9.3.0-rc.4
9.3.1
9.3.2
9.3.3
9.3.4
9.3.5
9.3.6
9.3.7
v0.3.1
v0.3.2
v0.3.2.1
v0.3.2.2
v0.3.3
v0.3.3.1
v0.3.3.2
v0.3.4
v0.3.5
v0.3.6
v0.6.2
v1.1.1
v9.2.0-preview
${ noResults }
2.9 KiB
2.9 KiB
短信发送
ABP 框架提供一个用于发送短信的抽象, 有如下优点:
- 在不改变应用程序代码的情况下, 你可以非常容易地切换短信发送提供者(提供商).
- 如果你想创建可重用的应用程序模块, 则不需要假设短信是如何发送的.
安装
建议你使用ABP CLI来安装这个包.
使用Abp CLI
在项目所在目录(.csproj 文件所在目录)打开命令行工具, 输入如下命令:
abp add-package Volo.Abp.Sms
手动安装
如果你想要手动安装;
- 添加 Volo.Abp.Sms NuGet 包到你的项目中:
Install-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", // 目标手机号
"This is test sms..." // 消息内容
);
}
}
}
示例中给定的SendAsync方法是一个扩展方法, 用于发送带有基本参数的短信.此外, 你也可以传入一个有如下属性的SmsMessage对象:
PhoneNumber(string):目标手机号Text(string):短信消息内容Properties(Dictionary<string, string>):用于传入自定义参数的键值对
NullSmsSender
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)
{
// 发送短信
}
}
}
More
ABP Commercial提供Twilio的集成包, 用于使用Twilio service来发送短信.