[Abp 源码分析]五、系统设置 (4)

本类用于设置项值的存储,其本身并不做设置项的新增,仅仅是相同的名称的设置项,优先从 ISettingStore 当中进行获取,如果不存在的话,才会使用开发人员在 SettingProvider 定义的值。

Abp 项目默认的 DefaultConfigSettingStore 实现并不会进行任何实质性的操作,只有 Zero.Common 项目当中重新实现的 SettingStore 类才是针对这些设置的值进行了持久化操作。

2.扩展:Abp.MailKit 模块配置

如果要在 .NetCore 环境下面使用邮件发送的话,首先推荐的就是 MailKit 这个库,而 Abp 针对 MailKit 库封装了一个新的模块,叫做 Abp.MailKit ,只需要进行简单的设置就可以发送邮件了。

在需要使用的模块上面添加:

[DependsOn(typeof(AbpMailKitModule))] public class TestModule : AbpModule { // 其他代码 }

之后需要自己定义一个 SettingProvider 并且在里面做好 SMTP 发件服务器配置:

public class DevEmailSettings : SettingProvider { public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context) { return new[] { // smtp 服务器地址 new SettingDefiniion(EmailSettingNames.Smtp.Host, "smtpserver"), // smtp 用户名称 new SettingDefinition(EmailSettingNames.Smtp.UserName, "yourusername"), // smtp 服务端口 new SettingDefinition(EmailSettingNames.Smtp.Port, "25"), // smtp 用户密码 new SettingDefinition(EmailSettingNames.Smtp.Password, "yourpassword"), // 发件人邮箱地址 new SettingDefinition(EmailSettingNames.DefaultFromAddress, "youremailaddress"), // 是否启用默认验证 new SettingDefinition(EmailSettingNames.Smtp.UseDefaultCredentials,"false") }; } }

然后在之前的模块预加载当中添加这个 Provider 到全局设置当中:

[DependsOn(typeof(AbpMailKitModule))] public class TestModule : AbpModule { public override void PreInitialize() { Configuration.Settings.Providers.Add<DevEmailSettings>(); } }

发送邮件十分简单,直接在需要使用的地方注入 IEmailSender 调用其 Send 或者 SendAsync 方法即可,下面是一个例子:

public class TestApplicationService : ApplicationService { private readonly IEmailSender _emailSender; public TestApplicationService(IEmailSender emailSender) { _emailSender = emailSender; } public Task TestMethod() { _emailSender.Send("xxxxxx@qq.com","无主题","测试正文",false); return Task.FromResult(0); } }

[Abp 源码分析]五、系统设置

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfxp.html