public async Task SendEmailAsync(string email, string subject, string message, string templateFile, object templateData) { var sender = new SendGridSender(Options.ApiKey); Email.DefaultSender = sender; Email.DefaultRenderer = new RazorRenderer(); var emailSending = Email .From(Options.From) .To(email) .Subject(subject) .Body(message); if (!String.IsNullOrEmpty(templateFile)) { var assembly = this.GetType().GetTypeInfo().Assembly; var targets = assembly.GetManifestResourceNames(); var templatefile = targets.First(file => file.Contains(templateFile)); emailSending.UsingTemplateFromEmbedded(templatefile, templateData, this.GetType().GetTypeInfo().Assembly); } await emailSending.SendAsync(); }
/** * SwiftMailer does currently not work with IDN domains, this function therefore converts the domains * * FIXME: Remove this once SwiftMailer supports IDN * * @param string email * @return string Converted mail address if `idn_to_ascii` exists */ // protected string convertEmail(string email) { // if (!function_exists('idn_to_ascii') || !defined('INTL_IDNA_VARIANT_UTS46') || strpos(email, '@') === false) { // return email; // } // // list(name, domain) = explode('@', email, 2); // domain = idn_to_ascii(domain, 0,INTL_IDNA_VARIANT_UTS46); // return name.'@'.domain; // } protected ISender getInstance() { if (this.instance != null) { return(this.instance); } object sender = null; switch (this.config.getSystemValue("mail_smtpmode", "smtp")) { case "sendgrid": sender = new SendGridSender("", true); break; case "mailgun": sender = new MailgunSender("", ""); break; case "smtp": default: sender = this.getSmtpInstance(); break; } return((ISender)sender); }
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddCors(); services.AddSingleton <IConfiguration>(Configuration); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "WebMail HTTP API", Version = "v1" }); }); // Inject webmail dependencies services.AddTransient <IEmail, Email>(sp => new Email(Configuration)); services.AddTransient <ISender, FailoverSenderProxy>(sp => { ISender sendGridSender = new SendGridSender(Configuration); ISender mailGunSender = new MailGunSender(Configuration); // Register email senders for failover. Failover follows registration order. return(new FailoverSenderProxy() .RegisterSender(sendGridSender) .RegisterSender(mailGunSender)); }); }
public void SetUp() { if (string.IsNullOrWhiteSpace(apiKey)) { throw new ArgumentException("SendGrid Api Key needs to be supplied"); } var sender = new SendGridSender(apiKey, true); Email.DefaultSender = sender; }
public async Task SendEmailAsync_ReturnsSuccessResult() { const string emailFrom = "*****@*****.**"; const string emailTo = "*****@*****.**"; const string subject = "test subject"; const string messageBody = "test body"; const string guidKey = "899DE54D-6921-4827-A2A0-DFBA783AC899"; Mock <SendGridClient> moq = new Mock <SendGridClient>(guidKey, null, null, null, null); SendGrid.Response result = await SendGridSender.SendEmailAsync(moq.Object, emailFrom, emailTo, subject, messageBody); Assert.True(!Equals(result.Body, null)); }
public async Task SendEmailAsync(string email, string subject, string htmlMessage) { var sender = new SendGridSender(Options.ApiKey); Email.DefaultSender = sender; var response = await Email.From(Options.From) .To(email) .Subject(subject) .Body(htmlMessage, true) .SendAsync(); Console.WriteLine(JsonConvert.SerializeObject(response)); }
public void TestMessageConstruction() { var sender = new SendGridSender(); var messageJob = this.MockMessageJob(); var subscribers = this.MockSubscribers(); var message = sender.ConstructMessage(messageJob, subscribers); var expected = subscribers.Select(s => s.Email).ToList(); var actual = message.Personalizations.SelectMany(x => x.Tos).Select(x => x.Email).ToList(); CollectionAssert.AreEquivalent(expected, actual); Assert.AreEqual(messageJob.MessageTemplate.BodyHtml, message.HtmlContent); Assert.AreEqual(messageJob.MessageTemplate.PlainTextVersion, message.PlainTextContent); this.AssertHeader(message); }
public void TestSubscribersResult() { // Arrange var messageJob = this.MockMessageJob(); var subscribers = this.MockNotifiableSubscribers(); var sender = new SendGridSender(); // Act var message = sender.ConstructMessage(messageJob, subscribers); var result = sender.SendMessage(messageJob, subscribers); // Assert foreach (var subscriber in subscribers) { Assert.IsTrue(subscriber.IsNotified); Assert.IsTrue(subscriber.Result == SendResultType.Success || subscriber.Result == SendResultType.FailedRecipient); } }
public async Task <OperationResult> ResetUserPassword(UserInfo info, string apiKey) { var checkUser = await context.Users.Where(u => u.AlbumNumber == info.AlbumNumber && u.Role == "Student").FirstOrDefaultAsync(); if (checkUser == null) { return(new OperationResult { Result = false, Error = "Brak studenta o podanym numerze albumu", Content = null }); } UserInfo user = await context.Users.Where(u => u.AlbumNumber == info.AlbumNumber && u.EmailAddress == info.EmailAddress && u.Role == "Student").FirstOrDefaultAsync(); if (user == null) { return(new OperationResult { Result = false, Error = "Adres email nie jest zgodny z numerem albumu studenta", Content = null }); } string newPassword = RandomPassword.GenerateTemporaryPassword(); using (SendGridSender sender = new SendGridSender(apiKey)) { var result = await sender.SendEmail_ResetUserPassword(user.EmailAddress, user.FirstName, user.LastName, newPassword); if (result.Result) { await IncreaseSendGridAccount(); user.Password = Cryptor.Encrypt(newPassword); await context.SaveChangesAsync(); } return(result); } }
private static async Task SendMail(ILogger log, Shared.Models.UserInformation userToInform) { //Mail sending process var sendGridSender = new SendGridSender(); var response = await sendGridSender .SendMail("*****@*****.**", new List <string>() { userToInform.Email }, "CoronaTestPlattform - Your CoViD19 test appointment has been scheduled", $"Hi {userToInform.Name} </ br> your test was scheduled at the testcenter: <b> {userToInform.Location} </b>.", $"Hi {userToInform.Name} your test was scheduled at the testcenter: {userToInform.Location}.", SendGridConfigBuilder.GetConfigFromEnvVars().sendGridApiKey); if (response != HttpStatusCode.Accepted) { log.LogError($"Error while trying to send mail to user. Got response code {response} from sendmail"); } else { log.LogInformation($"We have send an appointment mail to {userToInform.Email}"); } }
public async Task SendEmailAsync(SendEmailRequest request) { var apiKey = await _apiKeyProvider.GetApiKeyAsync(); var sender = new SendGridSender(apiKey); FluentEmail.Core.Email.DefaultSender = sender; FluentEmail.Core.Email.DefaultRenderer = new RazorRenderer(); var email = FluentEmail.Core.Email .From("*****@*****.**") .To(request.To) .Subject(request.Subject) .UsingTemplateFromFile( Path.Combine(_templatesPathProvider.GetEmailTemplatesPath(), $"{request.Template}.cshtml"), request.Model); await email.SendAsync(); }
public void SetUp() { var sender = new SendGridSender(apiKey, true); Email.DefaultSender = sender; }