58 lines
1.5 KiB
C#
58 lines
1.5 KiB
C#
using SPSolutions.Configuration.Provider;
|
|
using SPSolutions.Net.Configuration;
|
|
using System;
|
|
using System.Configuration;
|
|
using System.Configuration.Provider;
|
|
using System.Threading;
|
|
namespace SPSolutions.Net.Mail
|
|
{
|
|
public static class MailBodyManager
|
|
{
|
|
private static MailBodyProvider _provider = null;
|
|
private static MailBodyProviderCollection _providers = null;
|
|
private static object _lock = new object();
|
|
public static MailBodyProvider Provider
|
|
{
|
|
get
|
|
{
|
|
MailBodyManager.LoadProviders();
|
|
return MailBodyManager._provider;
|
|
}
|
|
}
|
|
public static MailBodyProviderCollection Providers
|
|
{
|
|
get
|
|
{
|
|
MailBodyManager.LoadProviders();
|
|
return MailBodyManager._providers;
|
|
}
|
|
}
|
|
private static void LoadProviders()
|
|
{
|
|
if (MailBodyManager._provider == null)
|
|
{
|
|
object @lock;
|
|
Monitor.Enter(@lock = MailBodyManager._lock);
|
|
try
|
|
{
|
|
if (MailBodyManager._provider == null)
|
|
{
|
|
MailBodySection mailBodySection = (MailBodySection)ConfigurationManager.GetSection("spSolutions.net.mail/mailBody");
|
|
MailBodyManager._providers = new MailBodyProviderCollection();
|
|
ProvidersHelper.InstantiateProviders(mailBodySection.Providers, MailBodyManager._providers, typeof(MailBodyProvider));
|
|
MailBodyManager._provider = MailBodyManager._providers[mailBodySection.DefaultProvider];
|
|
if (MailBodyManager._provider == null)
|
|
{
|
|
throw new ProviderException("Unable to load default MailBodyProvider");
|
|
}
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
Monitor.Exit(@lock);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|