using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc.RazorPages; using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc; using System.Net.Mail; using System.Net; //for captcha: using System.Net.Http; using System.Net.Http.Headers; using Newtonsoft.Json.Linq; using Microsoft.Extensions.Configuration; namespace contact.Pages { public class RequestLiteFormModel { [Required] public string Name { get; set; } [Required] public string Company { get; set; } [Required] public string Referrer { get; set; } [Required, EmailAddress] public string Email { get; set; } [Required] public string Message { get; set; } } public class RequestLiteModel : PageModel { public string Message { get; set; } [BindProperty] public RequestFormModel Contact { get; set; } private readonly IConfiguration _configuration; public RequestLiteModel(IConfiguration configuration) { _configuration = configuration; } public ActionResult OnPost() { if (!ModelState.IsValid) { return Page(); } if (!ReCaptchaPassed( Request.Form["g-recaptcha-response"], // that's how you get it from the Request object _configuration.GetSection("GoogleReCaptcha:secret").Value )) { //Return a fail code that will hopefully take us off the spammers list return StatusCode(500); } SendMail(); return Redirect("https://ayanova.com/confirmed.htm"); } private void SendMail() { //aspx version: //m.Body = "Name:\r\n" + edName.Value + "\r\nCompany:\r\n" + edCompany.Value + "\r\nReferrer:\r\n" + edReferrer.Value + "\r\nAdditional:\r\n" + edOther.Value + "\r\nRequested from:\r\n"; var MessageBody = $"Name:\r\n{Contact.Name}\r\nCompany:\r\n{Contact.Company}\r\nReferrer:\r\n{Contact.Referrer}\r\nAdditional:\r\n{Contact.Message}"; //SEND TO US using (var message = new MailMessage()) { message.To.Add(new MailAddress("support@ayanova.com")); message.From = new MailAddress(Contact.Email); message.Subject = $"Request for 30 day temporary **AyaNova Lite** activation keycode {Contact.Company}"; message.Body = MessageBody; using (var smtpClient = new SmtpClient("mail.ayanova.com")) { smtpClient.Host = "mail.ayanova.com"; smtpClient.Port = 2525; smtpClient.UseDefaultCredentials = false; //NOTE: Do not use the noreply email address to send mail, it crashes the server somehow smtpClient.Credentials = new System.Net.NetworkCredential("webmaster@ayanova.com", "c63c17add818fca81cae71a241ea1b552675a86280b7e7e45d36cbf2e8f3bc0e"); smtpClient.Send(message); } } //SEND COPY TO CLIENT using (var message = new MailMessage()) { message.To.Add(new MailAddress(Contact.Email)); message.From = new MailAddress("support@ayanova.com"); message.Subject = $"Confirmation of Request for 30 day temporary **AyaNova Lite** activation keycode for {Contact.Company}"; message.Body = MessageBody; using (var smtpClient = new SmtpClient("mail.ayanova.com")) { smtpClient.Host = "mail.ayanova.com"; smtpClient.Port = 2525; smtpClient.UseDefaultCredentials = false; //NOTE: Do not use the noreply email address to send mail, it crashes the server somehow smtpClient.Credentials = new System.Net.NetworkCredential("webmaster@ayanova.com", "c63c17add818fca81cae71a241ea1b552675a86280b7e7e45d36cbf2e8f3bc0e"); smtpClient.Send(message); } } } public void OnGet() { Message = "Your contact page."; } public static bool ReCaptchaPassed(string gRecaptchaResponse, string secret) { HttpClient httpClient = new HttpClient(); var res = httpClient.GetAsync($"https://www.google.com/recaptcha/api/siteverify?secret={secret}&response={gRecaptchaResponse}").Result; if (res.StatusCode != HttpStatusCode.OK) { // logger.LogError("Error while sending request to ReCaptcha"); return false; } string JSONres = res.Content.ReadAsStringAsync().Result; dynamic JSONdata = JObject.Parse(JSONres); if (JSONdata.success != "true") { return false; } return true; } } }