コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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"));
            }
        }