簡體   English   中英

ASP.NET樣板更改EmailSettingNames

[英]ASP.NET Boilerplate change EmailSettingNames

根據有關電子郵件發送的文檔:

電子郵件發件人使用設置管理系統來讀取電子郵件發送配置。 所有設置名稱在Abp.Net.Mail.EmailSettingNames類中均定義為常量字符串。

我需要有關如何覆蓋這些默認設置的值並使用我自己的指針。

我也將設置保存在“設置”表中,但是我不使用名稱“ Abp.Net.Mail.DefaultFromAddress”,而是使用“ Tenant.DefaultFromAddress”之類的名稱。

如果可能的話,我只想覆蓋電子郵件設置,而不篡改其他Abp設置。

謝謝。

澄清

我的目標是找到一種方法來覆蓋這些設置,並在“設置”表中使用不同的命名約定,因為應用程序的要求決定了我這樣做。

我只是希望它的名稱不同,但行為方式相同。

我的目標是找到一種方法來覆蓋這些設置,並在“設置”表中使用其他命名約定

它需要幾行。

  1. 實現自己的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"; } } 
  2. 實現自己的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); } } 
  3. 實現自己的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) { } } 
  4. YourProjectNameCoreModulePreInitialize方法中進行配置:

     Configuration.Settings.Providers.Add<MyEmailSettingProvider>(); Configuration.ReplaceService<ISmtpEmailSenderConfiguration, MySmtpEmailSenderConfiguration>(DependencyLifeStyle.Transient); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM