using Microsoft.Extensions.Configuration; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Email; using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using Saxonite.Net.Core.Web.Base.App; using System; using System.Collections.Generic; using System.Text; using Saxonite.Net.Standard.Base.Consoles; using Sarand.Net.Standard.Base.Utils; namespace Saxonite.Net.Core.Web.Base.Helpers { //======================================================================= public static class SaxEmailConfigHelper { //------------------------------------------------------------------- /// 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 SaxEmailConfig CreateEmailConfig(String context, ConfigurationSection emailConfigSection) { SaxEmailConfig emailConfig = new SaxEmailConfig(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, SaxSessionData sessionData, SaxUserAccount userAccount) { // Replace core tags, eg. main stylesheet. // ToDo. EmailConsole.ReplaceDynamicEmailTags(emailData); // Replace tags known to the web application. } //------------------------------------------------------------------- } //======================================================================= public static class EmailConfigList { public static SaxEmailConfig getConfigForSession(this List emailConfigs, SaxAppConfig appConfig) { if (appConfig != null && !StringUtil.IsEmpty(appConfig.Email.Context)) { foreach (SaxEmailConfig emailConfig in emailConfigs) { if (emailConfig.Context.EqualsCI(appConfig.Email.Context)) return emailConfig; } } return new SaxEmailConfig(""); } } //======================================================================= }