private static async Task SendConfirmationMail(string from, string fromPassword, string customerMail, string customerName) { // Construct the e-mail model EmailComposer <WelcomeMailModel> composer = new EmailComposer <WelcomeMailModel>(); EmailRequest <WelcomeMailModel> request = composer .SetModel(new WelcomeMailModel { Email = customerMail, Name = customerName }) .SetSubject("Welcome to the company!") .SetFrom("*****@*****.**") .SetTo(customerMail) .Build(); // Creating the body using the following components: // * Use Scriban as the template syntax // * Store templates in the project under the 'Templates' application directory // * Map e-mail templates by the mail model name (WelcomeMailModel -> Welcome.sbnhtml) IMailBodyBuilder builder = new MailBodyBuilder( new ScribanCompiler(), new AppDirectoryTemplateProvider("Templates", ".sbnhtml"), new ViewModelTemplateResolver()); EmailRequest populatedRequest = await builder.BuildAsync(request); // When using a gmail account: https://stackoverflow.com/a/25215834/1842261 SmtpCredentials credentials = new("smtp.gmail.com", "587", "false", "true", from, fromPassword); IMailer mailer = new SmtpMailer(credentials); await mailer.SendMailAsync(populatedRequest); }
public async Task Smtp_SendTemplateMail_SimulateDependencyInjection_ShouldSend() { SmtpCredentials credentials = new SmtpCredentials("smtp.mailtrap.io", "587", "false", "true", "d3538ae47a016d", "d4add3690c408c"); EmailComposer <TestMailModel> composer = new EmailComposer <TestMailModel>(); EmailRequest <TestMailModel> request = composer .SetModel(new TestMailModel { Email = "*****@*****.**", Name = "Guy Gadbois" }) .SetSubject("Hello world") .SetFrom("*****@*****.**") .SetTo("*****@*****.**") .SetCc("*****@*****.**") .SetBcc("*****@*****.**") .Build(); IMailer mailer = new SmtpMailer(credentials); IMailBodyBuilder builder = new MailBodyBuilder( new ScribanCompiler(), new AppDirectoryTemplateProvider("Templates", ".sbnhtml"), new ViewModelTemplateResolver()); EmailRequest populatedRequest = await builder.BuildAsync(request); await mailer.SendMailAsync(populatedRequest); }
public void Sendgrid_SendMail_KeyIsNotEmpty_ShouldConstruct() { EmailComposer <TestMailModel> composer = new EmailComposer <TestMailModel>(); EmailRequest <TestMailModel> request = composer .SetModel(new TestMailModel { Email = "*****@*****.**", Name = "Guy Gadbois" }) .SetSubject("Hello world") .SetFrom("*****@*****.**") .SetTo("*****@*****.**") .Build(); IMailer mailer = new SendGridMailer("MySGKey"); }
public void Sendgrid_SendMail_KeyIsEmpty_ShouldThrowException() { EmailComposer <TestMailModel> composer = new EmailComposer <TestMailModel>(); EmailRequest <TestMailModel> request = composer .SetModel(new TestMailModel { Email = "*****@*****.**", Name = "Guy Gadbois" }) .SetSubject("Hello world") .SetFrom("*****@*****.**") .SetTo("*****@*****.**") .Build(); Assert.ThrowsException <ArgumentNullException>(() => new SendGridMailer("")); }
public void Graph_SendMail_ShouldSend() { GraphCredentials credentials = new GraphCredentials("clientId", "tenantId", "secret", "from"); EmailComposer <TestMailModel> composer = new EmailComposer <TestMailModel>(); EmailRequest <TestMailModel> request = composer .SetModel(new TestMailModel { Email = "*****@*****.**", Name = "Guy Gadbois" }) .SetSubject("Hello world") .SetFrom("*****@*****.**") .SetTo("*****@*****.**") .Build(); Mock <IMailer> mock = new Mock <IMailer>(); mock.Setup(foo => foo.SendMailAsync(request)).Returns(Task.CompletedTask); }