/// <summary>Sends the email message to the single student with exam results.Mehtod check if email have been sent properly and then return bool.</summary> /// <param name="emailAccount">The email account.</param> /// <param name="user">The user.</param> /// <param name="message">The message.</param> /// <returns></returns> private bool sendMessage(Dictionary <string, string> emailAccount, UserEmailInfoModel user, JObject message) { String subjectTemplate = message.GetValue("messageSubject").Value <String>(); String bodyTemplate = message.GetValue("messageBody").Value <String>(); String email = emailAccount["domain"]; String emailPass = DecryptString(emailAccount["emailPass"]); String subject = String.Format(subjectTemplate, user.Course); String body = String.Format(bodyTemplate, user.Name, user.Surname, user.Grade, user.Course, user.ExamDate, user.Score, user.MaxScore); SmtpClient client = new SmtpClient("smtp.gmail.com"); client.EnableSsl = true; client.Port = 587; //client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(email, emailPass); MailMessage mailMessage = new MailMessage(); mailMessage.From = new MailAddress(email); mailMessage.To.Add(user.Email); mailMessage.Body = body; mailMessage.Subject = subject; try { client.Send(mailMessage); logger.Info("Mail was sent properly"); return(true); }catch (SmtpFailedRecipientException ex) { logger.Error("StudentExamsController - sendMessage " + ex.Message); return(false); } }
/// <summary>Sends the email with informations associated with results of exams for each students.</summary> /// <param name="ExamIDList">The exam identifier list.</param> /// <param name="context">The context.</param> public ActionResult SendEmail(IFormCollection StudentData) { using (var context = new ExamPlatformDbContext()) { try { String getGrade = StudentData.ElementAt(5).Value; String withoutZero = getGrade.Substring(0, 1); double grade = Convert.ToDouble(withoutZero); String getScore = StudentData.ElementAt(6).Value; double score = Convert.ToDouble(getScore); String getDate = StudentData.ElementAt(3).Value; DateTime date = Convert.ToDateTime(getDate); String maxExamScore = StudentData.ElementAt(7).Value; double maxScore = Convert.ToDouble(maxExamScore); UserEmailInfoModel user = new UserEmailInfoModel ( StudentData.ElementAt(0).Value, StudentData.ElementAt(1).Value, StudentData.ElementAt(2).Value, StudentData.ElementAt(4).Value, grade, date, score, maxScore ); JObject messageTemplate = RenderMessageTemplateFromFile(); Dictionary <string, string> emailAccount = GetEmailAccountFromDB(); var purveyed = sendMessage(emailAccount, user, messageTemplate); var studentResult = context.Exam .Include(e => e.ExamResult) .Include(a => a.Account) .Where(e => e.DateOfExam.Date == user.ExamDate.Date && e.DateOfExam.Hour == user.ExamDate.Hour && e.DateOfExam.Minute == user.ExamDate.Minute) .Select(z => z.ExamResult).ToList(); studentResult.First().ifResultSent = purveyed; context.Results.Update(studentResult.First()); context.SaveChanges(); } catch (Exception ex) { logger.Error("StudentExamsController - SendEmail " + ex.Message); } return(RedirectToAction("ShowAllCheckedExams")); } }