Exemplo n.º 1
0
        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}");
            }
        }
Exemplo n.º 2
0
        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);
            }
        }