Ejemplo n.º 1
0
        public async Task SendFailureEmailBack(
            string target,
            string nick,
            string channelName,
            string summary,
            string reason,
            DateTimeOffset sendTime)
        {
            var timeRepr = sendTime.ToUniversalTime().ToString();
            var email    = new FluentEmail.Core.Email($"{channelName}@{send.Domain}")
                           .To(target, nick)
                           // .ReplyTo(target)
                           .Subject($"Failed to deliver your message to {channelName}")
                           .Body($"<html><p>Your message sending to channel {channelName} at {timeRepr} was not delivered successfully.</p><p>Reason: {reason}.</p><p>Body of the failed message:</p><blockquote><pre>{summary}</pre></blockquote></html>", true)
                           .PlaintextAlternativeBody($"Your message sending to channel {channelName} at {timeRepr} was not delivered successfully.\r\n\r\nReason: {reason}.\r\n\r\nBody of the failing message:\r\n{summary}")
            ;
            var resp = await this.send.SendEmail(email);

            if (!resp.Successful)
            {
                var sb = new StringBuilder();
                sb.AppendFormat("Failed to deliver failure message of channel {0} to {1}.", channelName, target);
                sb.AppendLine();
                sb.AppendLine("Messages:");
                foreach (var i in resp.ErrorMessages)
                {
                    sb.AppendFormat("  - {0}", i);
                }
                logger.LogWarning(sb.ToString());
            }
            else
            {
                logger.LogInformation($"Channel '{channelName}' not found message to {target} successfully sent");
            }
        }
Ejemplo n.º 2
0
        }                                            //set only via Secret Manager

        public Task SendEmailAsync(string toEmailAddress, string subject, string message)
        {
            // TODO: Localize?
            var email = Mail.From("*****@*****.**", "Citizens' Exchange")
                        .To(toEmailAddress)
                        .Subject(subject)
                        .Body(message);

            email.Sender = new MailgunSender(Options.MailgunDomain, Options.MailgunApiKey);

            var response = email.SendAsync();

            return(response);
        }
Ejemplo n.º 3
0
        public async Task SendEmailAsync(string email, string subject, string htmlMessage)
        {
            try
            {
                var msg = new SendGridMessage()
                {
                    From             = new EmailAddress("*****@*****.**", "StopWatcher Customer Service"),
                    Subject          = subject,
                    PlainTextContent = htmlMessage,
                    HtmlContent      = htmlMessage
                };
                msg.AddTo(new EmailAddress(email));
                msg.SetClickTracking(false, false);
                Response response = await _sendGridClient.SendEmailAsync(msg);

                if (response.StatusCode != System.Net.HttpStatusCode.Accepted)
                {
                    throw new ApplicationException("SendGrid error: " + await response.Body.ReadAsStringAsync());
                }
            }

            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);

                try
                {
                    FluentEmail.Core.Email mgEmail = new FluentEmail.Core.Email("*****@*****.**", "StopWatcher Customer Service");
                    mgEmail
                    .To(email)
                    .Subject(subject)
                    .Body(htmlMessage);
                    var r2 = await _mailgunSender.SendAsync(mgEmail);

                    if (!r2.Successful)
                    {
                        throw new ApplicationException("MailGun error: " + string.Join(",", r2.ErrorMessages));
                    }
                }

                catch (Exception ex2)
                {
                    _logger.LogError(ex2, ex2.Message);
                }
            }
        }
Ejemplo n.º 4
0
        public async Task SendEmail(MailModel mailModel)
        {
            try
            {
                var email = new FluentEmail.Core.Email(mailModel.From)
                            .To(mailModel.To)
                            .Subject(mailModel.Subject);
                email.Renderer = new RazorRenderer();

                if (mailModel.TemplateFile != null)
                {
                    email.UsingTemplateFromFile <ViewModel>(mailModel.TemplateFile, mailModel.ViewModel);
                }
                else
                {
                    email.UsingTemplate <ViewModel>(mailModel.Template, mailModel.ViewModel);
                }

                await _smtpSender.SendAsync(email);
            }
            catch (SmtpFailedRecipientException ex)
            {
                _logger.LogError("SmtpMailSender.SendEmail", "SmtpFailedRecipientException occurred while sending mail", new
                {
                    MailModel    = mailModel,
                    SmtpSettings = _smtpSettings,
                    Exception    = ex
                });
            }
            catch (Exception ex)
            {
                _logger.LogError("SmtpMailSender.SendEmail", "Exception occurred while sending mail", new
                {
                    MailModel    = mailModel,
                    SmtpSettings = _smtpSettings,
                    Exception    = ex
                });

                throw;
            }
        }