protected override async Task ExecuteAsync(CancellationToken cancellationToken) { _mailConfigDto = await _mailConfig.GetConfig(_mailName); _logger.LogDebug($"Starting {_mailConfigDto.Name} mail process..."); cancellationToken.Register(() => _logger.LogDebug($"{_mailConfigDto.Name} mail background service is stopping.")); while (!cancellationToken.IsCancellationRequested) { if (BackgroundTask.ShouldStart(_mailConfigDto.NextSend)) { try { _mailConfigDto = await _mailConfig.GetConfig(_mailName); _logger.LogInformation($"Preparing {_mailConfigDto.Name} mail."); List <EmailMessage> emailMessages = await PrepareMail(); await _messageQueue.SendMessagesAsync <EmailMessage>(emailMessages); await _mailConfig.UpdateConfigNextSend(_mailName); } catch (Exception ex) { _logger.LogError(ex, "ProjectRecommendations ecountered an error"); } } await Task.Delay(1000, cancellationToken); } _logger.LogDebug($"{_mailConfigDto.Name} mail background service is stopping."); }
public async Task <EmailMessage> PrepareFeedbackMail(NotificationDto notification) { string feedbackContent = notification.Content; EmailMessage emailMessage = new EmailMessage(); string mailName = "FeedbackMessage"; MailConfigDto mailConfigDto = await _mailConfig.GetConfig(mailName); SendGridTemplateDto template = await _sendGridService.GetMailTemplate(mailConfigDto.TemplateId); DTOs.Version activeTemplate = template.Versions.FirstOrDefault(v => v.Active == 1); emailMessage = JsonConvert.DeserializeObject <EmailMessage>(AppSettings.FeedbackRecipients); EmailAddress fromAddress = _fromAddress; emailMessage.FromAddresses.Add(fromAddress); emailMessage.Subject = $"{activeTemplate.Subject} {_testEmailIndicator}"; string htmlContent = activeTemplate.HtmlContent.Replace("{{feedbackMessage}}", feedbackContent); string plainTextContent = activeTemplate.PlainContent.Replace("{{feedbackMessage}}", feedbackContent); emailMessage.MailContent.Add("text/html", htmlContent); emailMessage.MailContent.Add("text/plain", plainTextContent); return(emailMessage); }