예제 #1
0
        public IActionResult Contact()
        {
            ViewData["Message"] = "Your contact page.";
            var vm = new SendContactMessageViewModel
            {
                GooglePublicKey = _config.GetSection("SiteConfiguration")["RecaptchaSitePublic"]
            };

            return(View(vm));
        }
예제 #2
0
        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"));
        }