public async Task SendEmailReminder(ReminderEmailModel model) { try { var message = new MimeMessage(); message.From.Add(MailboxAddress.Parse(_options.Email)); foreach (var email in model.Emails) { message.To.Add(MailboxAddress.Parse(email)); } message.Subject = "Prace roczne - Przypomnienie"; var left = model.DaysToDeadline == 1 ? "Pozostał" : "Pozostało"; var days = model.DaysToDeadline == 1 ? "dzień" : "dni"; message.Body = new TextPart("plain") { Text = $"{left} {model.DaysToDeadline} {days} do upłynięcia ostatecznego terminu." + $"\nJeżeli nie dodałeś(aś) jeszcze wszystkich prac, lub jeśli są prace, które oczekują Twojej recenzji, pośpiesz się." + $"\nPo upłynięciu terminu końcowego, nie będzie dalszej możliwości dodania pracy lub wystawienia recenzji." + $"\n\nTen e-mail został wygenerowany automatycznie." }; await SendEmail(message); } catch (Exception e) { _logger.LogError($"Failed to send reminder email to {string.Join(", ", model.Emails)}. Reason: {e.Message}"); } }
public async Task SendReminderEmail() { try { string message = ""; //it includes appUser object var reminder = _reminderRepository.GetAllReminders().ToList(); foreach (var item in reminder) { var currentTime = DateTime.Now; //int comparer = TimeSpan.Compare(item.ReminderTime.TimeOfDay, currentTime.TimeOfDay); bool comparer = false; if (item.ReminderTime.Hour <= currentTime.Hour) { if (item.ReminderTime.Minute < currentTime.Minute) { comparer = true; } } if (comparer) { continue; } if (item.ReminderTime.Hour == currentTime.Hour && item.ReminderTime.Minute == currentTime.Minute) { //find a way to check if email is valid // you can employ some email validation service //var appUser = await _userManager.FindByIdAsync(item.AppUserId); ReminderEmailModel budgetEmailModel = new ReminderEmailModel() { UserName = item.AppUser.UserName, Heading = "Remember to Record your Expenses", Message = item.ReminderMessage }; message = await _viewRenderService.RenderToStringAsync("ReminderEmail", budgetEmailModel); await _emailService.SendReminderEmail(item.AppUser.Email, message); } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } }