///<inheritdoc/> public async Task <(SendMailResult, Guid)> SendMail(IMessage message, IEmailAddress redirectTo) { Guid requestId = await _mailRepository.SaveRequestAsync(message); IMessageHandle msgToSend; if (_isProduction) { msgToSend = new Message ( message.Subject, message.Content, message.From, message.ReplyTo, message.To.ToList(), message.Cc.ToList(), message.Bcc.ToList(), message.Files.ToList(), message.EnableHtml ); } else { if (string.IsNullOrWhiteSpace((redirectTo ?? _redirectOptions).Email)) { throw new ArgumentNullException("RedirectTo options parameters is not defined in application settings"); } msgToSend = new Message ( message.Subject, message.Content, message.From, message.ReplyTo, new List <IEmailAddress>() { redirectTo ?? _redirectOptions }, null, null, message.Files.ToList(), message.EnableHtml ); } if (message.Headers.Count > 0) { foreach (KeyValuePair <string, string> header in message.Headers) { msgToSend.AddHeader(header.Key, header.Value); } } SendMailResult mailResult = await _sender.SendMailAsync(msgToSend); return(mailResult, requestId); }
public void TestSendThroughProviderSpecified() { SendMailRequest request = Utility.GetTemplateRequest(); request.Providers = new List <ProviderInfo>() { new ProviderInfo { ProviderType = ProviderType.SendGrid, ApiKey = Configuration.SendGridApiKey }, }; SendMailResult result = SendMailRequestProcessor.ProcessSendMailRequest(request); Assert.AreEqual(result.ProviderUsed, ProviderType.SendGrid); }
public void TestFailoverToSecondProvider() { SendMailRequest request = Utility.GetTemplateRequest(); request.Providers = new List <ProviderInfo>() { new ProviderInfo { ProviderType = ProviderType.SendGrid, ApiKey = "IncorrectApiKey" }, new ProviderInfo { ProviderType = ProviderType.MailGun, ApiKey = Configuration.MailGunApiKey }, }; SendMailResult result = SendMailRequestProcessor.ProcessSendMailRequest(request); Assert.AreEqual(result.ProviderUsed, ProviderType.MailGun); }
public void TestFailoverToThirdProvider() { SendMailRequest request = Utility.GetTemplateRequest(); // specify incorrect key for two providers, the third one should be used request.Providers = new List <ProviderInfo>() { new ProviderInfo { ProviderType = ProviderType.SendGrid, ApiKey = "IncorrectApiKey" }, new ProviderInfo { ProviderType = ProviderType.MailGun, ApiKey = "IncorrectApiKey" }, }; SendMailResult result = SendMailRequestProcessor.ProcessSendMailRequest(request); Assert.AreEqual(result.ProviderUsed, ProviderType.Mandrill); }
public void TestEmailFormat() { SendMailRequest request = Utility.GetTemplateRequest(); // sender with name is accepted request.From = @"Test sender <*****@*****.**>"; // multiple recipients are accepted // recipient with name is accepted request.To.Add(@"SimpleMail SendingService <*****@*****.**"); request.Providers = new List <ProviderInfo>() { new ProviderInfo { ProviderType = ProviderType.SendGrid, ApiKey = Configuration.SendGridApiKey }, }; SendMailResult result = SendMailRequestProcessor.ProcessSendMailRequest(request); Assert.AreEqual(result.ProviderUsed, ProviderType.SendGrid); }