本类用于设置项值的存储,其本身并不做设置项的新增,仅仅是相同的名称的设置项,优先从 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); } }