/// <summary> /// Adds the safety mailer proxy for a NullMailer to dependency injection. /// </summary> /// <param name="services">The services.</param> /// <param name="safetyMailerSettings">The safety mailer settings.</param> /// <param name="mailerSettings">The mailer settings.</param> /// <returns>IServiceCollection.</returns> public static IServiceCollection AddSafetyMailer ( this IServiceCollection services, SafetyMailerSettings safetyMailerSettings, NullMailerSettings mailerSettings ) { return(AddMailer <SafetyMailer <NullMailer>, SafetyMailerSettings, NullMailer, NullMailerSettings>( services, mailerSettings, safetyMailerSettings)); }
/// <summary> /// Initializes a new instance of the <see cref="SafetyMailer{TMailer}" /> class. /// </summary> /// <param name="mailer">The mailer.</param> /// <param name="safetyMailerSettings">The safety mailer settings.</param> /// <exception cref="ArgumentException">Safety mailer cannot proxy another implementation of ISafetyMailer</exception> public SafetyMailer(TMailer mailer, SafetyMailerSettings safetyMailerSettings) { if (string.IsNullOrWhiteSpace(safetyMailerSettings.SafeRecipientEmailAddress)) { throw new ArgumentException( "Safety mailer cannot enable safe recipients when SafeRecipientEmailAddress is not specified"); } Mailer = mailer; SafetySettings = safetyMailerSettings; }
/// <summary> /// Adds the safety mailer proxy for an IMailer to dependency injection. /// </summary> /// <typeparam name="TMailer">The type of the t mailer.</typeparam> /// <typeparam name="TMailerSettings">The type of the t mailer settings.</typeparam> /// <param name="services">The services.</param> /// <param name="safetyMailerSettings">The safety mailer settings.</param> /// <param name="mailerSettings">The mailer settings.</param> /// <returns>IServiceCollection.</returns> public static IServiceCollection AddSafetyMailer <TMailer, TMailerSettings> ( this IServiceCollection services, SafetyMailerSettings safetyMailerSettings, TMailerSettings mailerSettings ) where TMailer : class, IMailer <TMailerSettings> where TMailerSettings : class, IMailerSettings { return(AddMailer <SafetyMailer <TMailer>, SafetyMailerSettings, TMailer, TMailerSettings>( services, mailerSettings, safetyMailerSettings)); }
/// <summary> /// Registers a safety mailer proxy for a MailKit mailer. /// </summary> /// <param name="factory">The factory.</param> /// <param name="safetyMailerSettings">The safety mailer settings.</param> /// <param name="mailerSettings">The mailer settings.</param> /// <param name="logger">The logger.</param> /// <param name="store">The history store.</param> public static void AddSafetyMailer( this MailerFactory factory, SafetyMailerSettings safetyMailerSettings, MkSmtpMailerSettings mailerSettings, ILogger <MkSmtpMailer> logger = null, IHistoryStore store = null) { factory.Register(() => new SafetyMailer <MkSmtpMailer>( new MkSmtpMailer ( mailerSettings, logger ?? factory.DefaultLoggerFactory?.CreateLogger <MkSmtpMailer>(), factory.ConfigureHistoryStoreLogger(store) ), safetyMailerSettings)); }
/// <summary> /// Registers a safety mailer proxy for the specified mailer type. /// </summary> /// <typeparam name="TMailer">The type of the t mailer.</typeparam> /// <typeparam name="TMailerSettings">The type of the t mailer settings.</typeparam> /// <param name="factory">The factory.</param> /// <param name="safetyMailerSettings">The safety mailer settings.</param> /// <param name="mailerSettings">The mailer settings.</param> /// <param name="logger">The logger.</param> /// <param name="store">The store.</param> public static void AddSafetyMailer <TMailer, TMailerSettings> ( this MailerFactory factory, SafetyMailerSettings safetyMailerSettings, TMailerSettings mailerSettings, ILogger <NullMailer> logger = null, IHistoryStore store = null ) where TMailer : class, IMailer <TMailerSettings> where TMailerSettings : class, IMailerSettings { factory.Register <SafetyMailer <TMailer>, SafetyMailerSettings, TMailer, TMailerSettings>( safetyMailerSettings, mailerSettings, logger ?? factory.DefaultLoggerFactory?.CreateLogger <NullMailer>(), factory.ConfigureHistoryStoreLogger(store)); }
/// <summary> /// Registers a safety mailer proxy for a SendGridMailer. /// </summary> /// <param name="factory">The factory.</param> /// <param name="safetyMailerSettings">The safety mailer settings.</param> /// <param name="clientFunc">The client function.</param> /// <param name="mailerSettings">The mailer settings.</param> /// <param name="logger">The logger.</param> /// <param name="store">The store.</param> public static void AddSafetyMailer ( this MailerFactory factory, SafetyMailerSettings safetyMailerSettings, Func <SendGridClient> clientFunc, SendGridMailerSettings mailerSettings, ILogger <SendGridMailer> logger = null, IHistoryStore store = null ) { factory.Register(() => new SafetyMailer <SendGridMailer>( new SendGridMailer ( clientFunc(), mailerSettings, logger ?? factory.DefaultLoggerFactory?.CreateLogger <SendGridMailer>(), factory.ConfigureHistoryStoreLogger(store) ), safetyMailerSettings)); }