Не удается отправить электронное письмо - сайт Azure MVC, возвращающий 404 из jquery .min. js: 2 при попытке отправить форму в запрос ajax через контроллер - PullRequest
0 голосов
/ 27 января 2020

Развертывание веб-приложения сегодня вечером. Почему он не может найти / связаться, я попробовал fullurl.com/contact и другие идеи, но в файле есть кнопка «Отправить» на странице, которая постоянно говорит мне, что это не так. Видите ли вы что-то не так со следующим, что может вызвать это?

Это работало нормально до того, как я переместился с новыми учетными данными smtp. Любые azure шаги по развертыванию, которые я мог пропустить, которые могли бы привести к тому, что он не найдет / не найдет контакт по запросу после публикации?

Ошибка с веб-сайта:

contact 404 xhr jquery.min.js:2 222 B   44 ms

send    @   jquery.min.js:2
ajax    @   jquery.min.js:2
(anonymous) @   contact:381

homecontroller.cs:

        [HttpPost]
        [Route("contact")]
        public JsonResult SendContactEmail(string name, string email, string message, string phone, string bot)
        {
            if (string.IsNullOrWhiteSpace(email) || string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(name))
            {
                return Json(false);
            }

            if (string.IsNullOrEmpty(bot))
            {
                string subject = String.Format("{0} my contact form", "");
                string messageBody = "<html><body style=\"font-family: Segoe UI, Helvetica, sans-serif;\">";

                var sb = new StringBuilder();

                sb.Append("Name: " + name);
                sb.Append("<br />");

                sb.Append("Email: " + email);
                sb.Append("<br />");

                sb.Append("Phone number: " + phone);
                sb.Append("<br />");

                sb.Append("Message: " + message);
                sb.Append("<br /> ");

                messageBody += sb.ToString();

                EmailHelper.SendEmail(new EmailInfo
                {
                    Body = messageBody,
                    FromName = "my name",
                    Subject = subject,
                    ToAddresses = new StringCollection { "myemail@email.com" }
                }, "");
            }

            return Json(true);
        }



        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }

    public class EmailInfo
    {
        public string FromName { get; set; }

        public StringCollection ToAddresses { get; set; }

        public string Subject { get; set; }

        public string Body { get; set; }
    }

    public class EmailHelper
    {
        public static bool SendEmail(EmailInfo emailInfo, string attachmentPath)
        {
            //TODO: From Email information -- Needs to be your email account username and password
            string smtpMailServer = "smtp.sendgrid.net";
            string smtpUserName = "account";
            string smtpPassword = "key";
            int smtpPort = 587;

            var oMailMessage = new MailMessage();
            var fromMailAddress = new MailAddress(smtpUserName, "my addy");
            oMailMessage.From = fromMailAddress;
            oMailMessage.IsBodyHtml = true;
            oMailMessage.Priority = MailPriority.High;
            oMailMessage.Subject = emailInfo.Subject;
            oMailMessage.Body = emailInfo.Body;

            foreach (string to in emailInfo.ToAddresses)
            {
                oMailMessage.To.Add(to);
            }

            var oSmtpClient = new SmtpClient(smtpMailServer, smtpPort);
            oSmtpClient.Credentials = new NetworkCredential(smtpUserName, smtpPassword);
            oSmtpClient.EnableSsl = false;

            try
            {
                oSmtpClient.Send(oMailMessage);
                return true;
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
                return false;
            }
        }
    }
}

Ajax скрипт, появляющийся на странице / странице контакта:

    document.querySelector("form").addEventListener("submit", function (e) {
        e.preventDefault();

        $.ajax({
            type: 'post',
            url: '/contact',
            data: $(this).serialize(),
            success: function (res) {
                $(window).scrollTop(350);
                if (res) {
                    $(".contact-form").html("<h3 style='color: #c2ae79; text-align: center' class='wow fadeInUp' data-wow-duration='1s'>Thank you for contacting us! We will be in touch shortly.</p>");
                } else {
                    $(".contact-form").prepend("<h3 style='color: red; text-align: center'>Please check all required fields.</p>");
                }
            }
        });
    });

1 Ответ

0 голосов
/ 30 января 2020

Учетная запись для sendgrid всегда должна быть 'apikey'

        //TODO: From Email information -- Needs to be your email account username and password
        string smtpMailServer = "smtp.sendgrid.net";
        string smtpUserName = "account";
        string smtpPassword = "key";
        int smtpPort = 587;

Поэтому, когда вы приводите это в конструктор электронной почты:

var fromMailAddress = new MailAddress(smtpUserName, "my addy");

Выдает ошибку, и если вы сделайте это внутри скомпилированного двоичного файла на реальном веб-сайте, который выдает 404.

Вы можете использовать точки останова и localhost внутри файла контроллера, чтобы увидеть более точное сообщение об ошибке.

Изменение конструктор электронной почты, принимающий фактическое письмо, исправляет эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...