public IActionResult Contact() { ViewData["Message"] = "Your contact page."; var vm = new SendContactMessageViewModel { GooglePublicKey = _config.GetSection("SiteConfiguration")["RecaptchaSitePublic"] }; return(View(vm)); }
public async Task <IActionResult> SendContactMessage(SendContactMessageViewModel model) { var errorMsg = string.Empty; if (ModelState.IsValid) { var verify = new RecaptchaVerify(_config, _logService); var googleResponse = await verify.GetRecaptchaScore(model.GoogleClientToken); if (googleResponse.success) { var msg = new StringBuilder(); msg.AppendFormat("The following mail is being sent on behalf of '{0}'. ", model.EmailAddress); msg.AppendLine(); msg.Append(model.EmailMessage); var email = new Email(_config) { MailSubject = $"Contact Us Form Submission from {model.EmailAddress}", Message = msg.ToString(), SenderEmail = model.EmailAddress, SenderDisplayName = model.EmailAddress, RecipientEmail = _config.GetSection("SiteConfiguration")["SiteEmail"], RecipientDisplayName = _config.GetSection("SiteConfiguration")["SiteName"] }; var error = email.SendEmail(); if (!string.IsNullOrWhiteSpace(error)) { errorMsg = $"Email not sent - {error}"; } } else { errorMsg = $"RECAPTCHA failed - score {googleResponse.score}"; } } else { errorMsg = $"Model State Invalid: {string.Join('|', ModelState.Values.Select(s => s.Errors))}"; } if (!string.IsNullOrWhiteSpace(errorMsg)) { var log = _logService.Get(0); log.Date = DateTime.Now; log.LogType = "Error"; log.Summary = errorMsg; _logService.Add(log); TempData["ErrorBannerMessage"] = "Your correspondence didn't reach us, please email us directly at [email protected] for immediate assistance."; } else { TempData["SuccessBannerMessage"] = "We have received your message and will get back with you as soon as we can!"; } return(RedirectToAction("Contact")); }