private static string LoadEmailTemplate(PassGrade grade)
        {
            string templateFileName = null;

            if (grade == PassGrade.Passed)
            {
                templateFileName = "/App_Data/PassedEmailTemplate.html";
            }
            else if (grade == PassGrade.Failed)
            {
                templateFileName = "/App_Data/FailedEmailTemplate.html";
            }
            else if (grade == PassGrade.Zero)
            {
                templateFileName = "/App_Data/ZeroLevelEmailTemplate.html";
            }

            return(File.ReadAllText(HostingEnvironment.MapPath(templateFileName)));
        }
        private bool TrySendMail(string email, string name, PassGrade passGrade, Business.Models.Question[] questions, int countOfCorrectAnswers, int totalQuestions, out string errorJson)
        {
            errorJson = string.Empty;

            var values = new List <Tuple <string, string> >
            {
                Tuple.Create("%%email%%", email),
                Tuple.Create("%%name%%", name),
                Tuple.Create("%%correct_anwsers%%", countOfCorrectAnswers.ToString()),
                Tuple.Create("%%total_questions%%", totalQuestions.ToString())
            };

            var isEmailSent           = false;
            var errorWhenSendingEmail = false;

            try
            {
                using (var message = _mailGenerator.Generate(questions, values, passGrade, email, countOfCorrectAnswers))
                {
                    isEmailSent           = _mailService.Send(message);
                    errorWhenSendingEmail = !isEmailSent;
                }
            }
            catch (Exception e)
            {
                Logger.Error(nameof(TrySendMail), e);
            }

            if (!isEmailSent)
            {
                errorJson = JsonConvert.SerializeObject(new { HasErrors = true, MailSent = false, MailSendError = errorWhenSendingEmail },
                                                        JsonSerializerSettings);
                return(false);
            }

            return(true);
        }
        public MailMessage Generate(Question[] questions, IList <Tuple <string, string> > values, PassGrade grade, string toEmail, int quantity)
        {
            var variationIndex = SelectWordVariationIndex(quantity);
            var otvet          = MailGenerator.Otvet[variationIndex];
            var pravilnyj      = MailGenerator.Pravilnyj[variationIndex];
            var vernyj         = MailGenerator.Vernyj[variationIndex];

            var questionExplanationRows = GetQuestionExplanationRows(questions);

            var extendedValuesList = values.Concat(new[]
            {
                Tuple.Create("%%форма_слова_ответ%%", otvet),
                Tuple.Create("%%форма_слова_правильный%%", pravilnyj),
                Tuple.Create("%%форма_слова_верный%%", vernyj),
                Tuple.Create("%%question_rows%%", questionExplanationRows),
            }).ToList();

            var mailMessage = new MailMessage
            {
                Subject    = InjectValues(LoadEmailSubjectTemplate(grade), extendedValuesList),
                Body       = InjectValues(LoadEmailTemplate(grade), extendedValuesList),
                IsBodyHtml = true
            };

            mailMessage.To.Add(new MailAddress(toEmail));
            mailMessage.ReplyToList.Add(Config.Settings.ReplyTo);
            return(mailMessage);
        }