[英]ASP.NET Boilerplate change EmailSettingNames
根據有關電子郵件發送的文檔:
電子郵件發件人使用設置管理系統來讀取電子郵件發送配置。 所有設置名稱在Abp.Net.Mail.EmailSettingNames類中均定義為常量字符串。
我需要有關如何覆蓋這些默認設置的值並使用我自己的指針。
我也將設置保存在“設置”表中,但是我不使用名稱“ Abp.Net.Mail.DefaultFromAddress”,而是使用“ Tenant.DefaultFromAddress”之類的名稱。
如果可能的話,我只想覆蓋電子郵件設置,而不篡改其他Abp設置。
謝謝。
我的目標是找到一種方法來覆蓋這些設置,並在“設置”表中使用不同的命名約定,因為應用程序的要求決定了我這樣做。
我只是希望它的名稱不同,但行為方式相同。
我的目標是找到一種方法來覆蓋這些設置,並在“設置”表中使用其他命名約定
它需要幾行。
實現自己的EmailSettingNames :
public static class MyEmailSettingNames { public const string DefaultFromAddress = "Tenant.DefaultFromAddress"; public const string DefaultFromDisplayName = "Tenant.DefaultFromDisplayName"; public static class Smtp { public const string Host = "Tenant.Smtp.Host"; public const string Port = "Tenant.Smtp.Port"; public const string UserName = "Tenant.Smtp.UserName"; public const string Password = "Tenant.Smtp.Password"; public const string Domain = "Tenant.Smtp.Domain"; public const string EnableSsl = "Tenant.Smtp.EnableSsl"; public const string UseDefaultCredentials = "Tenant.Smtp.UseDefaultCredentials"; } }
實現自己的EmailSettingProvider :
internal class MyEmailSettingProvider : SettingProvider { public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context) { return new[] { new SettingDefinition(MyEmailSettingNames.Smtp.Host, "127.0.0.1", L("SmtpHost"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.Smtp.Port, "25", L("SmtpPort"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.Smtp.UserName, "", L("Username"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.Smtp.Password, "", L("Password"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.Smtp.Domain, "", L("DomainName"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.Smtp.EnableSsl, "false", L("UseSSL"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.Smtp.UseDefaultCredentials, "true", L("UseDefaultCredentials"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.DefaultFromAddress, "", L("DefaultFromSenderEmailAddress"), scopes: SettingScopes.Application | SettingScopes.Tenant), new SettingDefinition(MyEmailSettingNames.DefaultFromDisplayName, "", L("DefaultFromSenderDisplayName"), scopes: SettingScopes.Application | SettingScopes.Tenant) }; } private static LocalizableString L(string name) { return new LocalizableString(name, MyLocalizationSourceName); } }
實現自己的SmtpEmailSenderConfiguration :
public class MySmtpEmailSenderConfiguration : EmailSenderConfiguration, ISmtpEmailSenderConfiguration, ITransientDependency { public virtual string Host => GetNotEmptySettingValue(MyEmailSettingNames.Smtp.Host); public virtual int Port => SettingManager.GetSettingValue<int>(MyEmailSettingNames.Smtp.Port); public virtual string UserName => GetNotEmptySettingValue(MyEmailSettingNames.Smtp.UserName); public virtual string Password => GetNotEmptySettingValue(MyEmailSettingNames.Smtp.Password); public virtual string Domain => SettingManager.GetSettingValue(MyEmailSettingNames.Smtp.Domain); public virtual bool EnableSsl => SettingManager.GetSettingValue<bool>(MyEmailSettingNames.Smtp.EnableSsl); public virtual bool UseDefaultCredentials => SettingManager.GetSettingValue<bool>(MyEmailSettingNames.Smtp.UseDefaultCredentials); public MySmtpEmailSenderConfiguration(ISettingManager settingManager) : base(settingManager) { } }
在YourProjectNameCoreModule的PreInitialize
方法中進行配置:
Configuration.Settings.Providers.Add<MyEmailSettingProvider>(); Configuration.ReplaceService<ISmtpEmailSenderConfiguration, MySmtpEmailSenderConfiguration>(DependencyLifeStyle.Transient);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.