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); }