/// <summary> /// Creates the instance of a MailProvider using the given configuration. /// </summary> /// <param name="configurationLoader">The configuration to be supplied to the MailProvider. The configuration key value pairs are specific to providers.</param> /// <param name="mapper">The object mapper, used for mapping between E-Mail domain models and models used by third-party provider libraries.</param> /// <returns>The instantiated MailProvider.</returns> public IMailProvider GetProvider(IConfigurationLoader configurationLoader, IMapper mapper) { if (configurationLoader == null) { throw new ArgumentNullException(nameof(configurationLoader)); } IMailProvider mailProvider = null; var config = configurationLoader.GetConfiguration(); if (config.TryGetValue("MailProvider", out string provider)) { if (!string.IsNullOrWhiteSpace(provider)) { switch (provider) { case nameof(Provider.SendGrid): mailProvider = new SendGridProvider(configurationLoader); break; default: throw new ArgumentException("Unknown provider."); } } } else { throw new InvalidOperationException("Configuration is missing MailProvider."); } return(mailProvider); }
public async void Send_WithDefaultFromAddress_Success() { _sendGridClient.Setup(client => client.SendEmailAsync(It.IsAny <SGMail.SendGridMessage>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Response(System.Net.HttpStatusCode.Accepted, null, null)); var provider = new SendGridProvider( new SendGridOptions { DefaultFromAddress = "*****@*****.**" }, _sendGridClient.Object, _loggerFactory.Object); var message = new SendGridMessage { ToAddresses = new List <string> { "*****@*****.**" }, Subject = "Test Email" }; var result = await provider.Send(message.ToParameters()); Assert.True(result.IsSuccess); Assert.Empty(result.Errors); }
public async void Send_Failed() { _sendGridClient.Setup(client => client.SendEmailAsync(It.IsAny <SGMail.SendGridMessage>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Response(System.Net.HttpStatusCode.BadRequest, new StringContent("Error01"), null)); var message = new SendGridMessage { FromAddress = "*****@*****.**", ToAddresses = new List <string> { "*****@*****.**" }, Subject = "Test Email" }; var provider = new SendGridProvider(_sendGridClient.Object, _loggerFactory.Object); var result = await provider.Send(message.ToParameters()); Assert.False(result.IsSuccess); Assert.NotEmpty(result.Errors); Assert.Equal("Error01", result.Errors[0]); var startMessage = LoggerHelper.FormatLogValues(SendGridLogMessages.Sending_Start, message.Subject, message.ToAddresses); _logger.VerifyLog(LogLevel.Debug, startMessage); var endMessage = LoggerHelper.FormatLogValues(SendGridLogMessages.Sending_End, message.Subject, message.ToAddresses); _logger.VerifyLog(LogLevel.Debug, endMessage, Times.Never()); }
public async void Send_WithoutFromAddress_ReturnError() { var provider = new SendGridProvider(_sendGridClient.Object, _loggerFactory.Object); var message = new SendGridMessage { ToAddresses = new List <string> { "*****@*****.**" }, Subject = "Test Email" }; var result = await provider.Send(message.ToParameters()); Assert.False(result.IsSuccess); Assert.Equal("From Address should not be empty", result.Errors[0]); }
public static IEmailProvider getEmailInstance(EmailEnum emailProvider) { IEmailProvider _emailProvider; switch (emailProvider.ToString()) { case "MailGun": _emailProvider = new MailGunProvider(); break; case "SendGrid": _emailProvider = new SendGridProvider(); break; default: _emailProvider = new SendGridProvider(); break; } return(_emailProvider); }
public SendGridEmailService(ILogger <SendGridException> logger) { this.logger = logger; this.sendGridProvider = new SendGridProvider(); }