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