Example #1
0
        public async Task SendAsync(Email email, Dictionary <string, string> data = null)
        {
            email.ErrorMessage = null;
            email.Body         = await templator.CompileAsync(email.TemplateKey,
                                                              data ?? JsonConvert.DeserializeObject <Dictionary <string, string> >(email.Data));

            try
            {
                if (options.Value.IsEnabled)
                {
                    using var smtpClient             = new SmtpClient(options.Value.Host, options.Value.Port);
                    smtpClient.UseDefaultCredentials = false;
                    smtpClient.Credentials           = new NetworkCredential(options.Value.UserName, options.Value.Password);
                    smtpClient.EnableSsl             = options.Value.EnableSsl;
                    var message = new MailMessage(options.Value.From, email.To, email.Subject, email.Body);
                    await smtpClient.SendMailAsync(message);

                    email.SentAt = DateTime.Now;
                }
            }
            catch (Exception ex)
            {
                email.ErrorMessage = ex.Message;
                throw;
            }
            finally
            {
                await db.SaveChangesAsync();
            }
        }