94 lines
3.6 KiB
C#
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("");
|
|
}
|
|
}
|
|
|
|
//=======================================================================
|
|
}
|