using Microsoft.Extensions.Configuration; using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.Net.Standard.Base.Email; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; using System.Text; namespace Sarand.BusinessMgr.Net.Core.Web.Helpers { //======================================================================= public static class SbmEmailConfigHelper { //------------------------------------------------------------------- /// Extract the email configurations from the application settings. public static Dictionary ExtractEmailConfigs(IConfigurationSection emailConfigsSection) { Dictionary emailConfigs = new Dictionary(); foreach (ConfigurationSection emailConfigSection in emailConfigsSection.GetChildren()) { if (!StringUtil.IsEmpty(emailConfigSection.Key)) emailConfigs.Add(emailConfigSection.Key, CreateEmailConfig(emailConfigSection.Key, emailConfigSection)); } return emailConfigs; } private static SbmEmailConfig CreateEmailConfig(String context, ConfigurationSection emailConfigSection) { SbmEmailConfig emailConfig = new SbmEmailConfig(context); if (emailConfigSection != null) { IConfigurationSection message = emailConfigSection.GetSection("Message"); emailConfig.Message.AddressFrom = message["AddressFrom"]; foreach (var addressBcc in message.GetSection("AddressesBcc").GetChildren()) emailConfig.Message.AddressesBcc.Add(StringUtil.TrimAll(addressBcc.Value)); IConfigurationSection smtp = emailConfigSection.GetSection("SMTP"); emailConfig.SMTP.Server = smtp["Server"]; emailConfig.SMTP.ServerPort = StringUtil.ToInt(smtp["ServerPort"]); emailConfig.SMTP.UseSSL = StringUtil.ToBool(smtp["UseSSL"]); IConfigurationSection send = emailConfigSection.GetSection("Send"); emailConfig.Send.Using = send["Using"]; emailConfig.Send.UserName = send["UserName"]; emailConfig.Send.Password = send["Password"]; } return emailConfig; } //------------------------------------------------------------------- // Send email. public static bool SendEmail(SaEmailData emailData) { // ToDo return EmailConsole.SendEmail(emailData); throw new NotSupportedException(); } //------------------------------------------------------------------- /// /// Replace dynamic tags in email message body. /// /// public static void ReplaceDynamicEmailBodyTags(SaEmailData emailData, SbmSessionData sessionData, SbmAffiliate affiliateUser) { // Replace core tags, eg. main stylesheet. // ToDo. EmailConsole.ReplaceDynamicEmailTags(emailData); // Replace tags known to the web application. } //------------------------------------------------------------------- } //======================================================================= public static class EmailConfigList { public static SbmEmailConfig getConfigForSession(this List emailConfigs, SbmAppConfig appConfig) { if (appConfig != null && !StringUtil.IsEmpty(appConfig.Email.Context)) { foreach (SbmEmailConfig emailConfig in emailConfigs) { if (emailConfig.Context.EqualsCI(appConfig.Email.Context)) return emailConfig; } } return new SbmEmailConfig(""); } } //======================================================================= }