/// <summary> /// Adds SMTP EMail sender to services. /// </summary> public static IServiceCollection AddSmtpEMailSender( this IServiceCollection services, ISmtpEMailOptions options, bool useAsDefaultSender = true) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } options.AssertValid(); services.TryAddSingleton(options); services.TryAddSingleton <ISmtpEMailSender, SmtpEMailSender>(); if (useAsDefaultSender) { services.TryAddSingleton <IEMailSender>(s => s.GetRequiredService <ISmtpEMailSender>()); } return(services); }
public SmtpEMailSender( ISmtpEMailOptions smtpEMailOptions, ILogger <SmtpEMailSender> logger) { _emailOptions = smtpEMailOptions ?? throw new ArgumentNullException(nameof(smtpEMailOptions)); _emailOptions.AssertValid(); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
/// <summary> /// Validates an <see cref="ISmtpEMailOptions"/>. /// </summary> /// <returns></returns> public static IReadOnlyCollection <ConfigurationValidationError> Validate(this ISmtpEMailOptions options, string?prefix = null) { var errors = new ConfigurationValidationErrorCollection(prefix); errors.AddErrorIf(String.IsNullOrWhiteSpace(options.SmtpServer), nameof(options.SmtpServer), "can't be null or empty"); errors.AddErrorIf(String.IsNullOrWhiteSpace(options.SmtpLogin), nameof(options.SmtpLogin), "can't be null or empty"); errors.AddErrorIf(String.IsNullOrWhiteSpace(options.SmtpPassword), nameof(options.SmtpPassword), "can't be null or empty"); errors.AddErrorIf(String.IsNullOrWhiteSpace(options.EMailFrom), nameof(options.EMailFrom), "can't be null or empty"); errors.AddErrorIf(String.IsNullOrWhiteSpace(options.SenderName), nameof(options.SenderName), "can't be null or empty"); errors.AddErrorIf(options.SmtpPort <= 0, nameof(options.SmtpPort), "can't be less than 1"); return(errors); }