Files
BusinessMgr-2019/SaBusMgrCoreWeb/Web/Helpers/SbmEmailConfigHelper.cs
T
2021-07-08 20:50:46 +01:00

94 lines
3.6 KiB
C#

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
{
//-------------------------------------------------------------------
/// <summary>Extract the email configurations from the application settings.</summary>
public static Dictionary<String, SbmEmailConfig> ExtractEmailConfigs(IConfigurationSection emailConfigsSection)
{
Dictionary<String, SbmEmailConfig> emailConfigs = new Dictionary<String, SbmEmailConfig>();
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();
}
//-------------------------------------------------------------------
/// <summary>
/// Replace dynamic tags in email message body.
/// <para></para>
/// </summary>
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<SbmEmailConfig> emailConfigs, SbmSessionConfig sessionConfig)
{
if (sessionConfig != null && !StringUtil.IsEmpty(sessionConfig.Email.Context))
{
foreach (SbmEmailConfig emailConfig in emailConfigs)
{
if (emailConfig.Context.EqualsCI(sessionConfig.Email.Context))
return emailConfig;
}
}
return new SbmEmailConfig("");
}
}
//=======================================================================
}