ASP.NET Email Form Возвращаемое сообщение после отправки формы - PullRequest
0 голосов
/ 01 февраля 2012

Извините, если это было решено. Я просто не могу заставить его работать. У меня есть контактная форма электронной почты. У меня форма работает нормально. Это отправка по электронной почте. Однако после отправки формы я либо получал сообщение, чтобы всплывающее окно, либо перенаправлялся на другую страницу, сообщая, что их электронное письмо было успешно отправлено, и мы ответим, как сможем. Я пробовал RedirectActionTo и некоторые другие вещи, но я не могу заставить его работать. Вот мой код.

       public ActionResult ContactForm(ContactModel emailModel)
    {            
            MailMessage oMail = new MailMessage();

            oMail.From = new MailAddress("no-reply@domain.com", "Web Contact Form");
            oMail.To.Add("email@domain.com");
            oMail.Subject = emailModel.Subject;
            string body = "Name: " + emailModel.Name + "\n"
                        + "Email: " + emailModel.Email + "\n"
                        + "Website: " + emailModel.Website + "\n"
                        + "Phone: " + emailModel.Phone + "\n\n"
                        + emailModel.Message;

            oMail.Body = body;

            if (SendMessage(oMail))
            {
                return RedirectToAction("Message");
            }
            else
            {
                return RedirectToAction("Error");
            }
            return View();
    }
    private bool SendMessage(MailMessage oMail)
    {
        SmtpClient client = new SmtpClient("relay-hosting.secureserver.net");
        client.Credentials = new NetworkCredential("email@domain.com", "********", "domaion.com");
        try
             {
                 client.Send(oMail);
                 return true;
             }
             catch (Exception ex)
             {
                 this.exception = ex;
                 return false;
             } }

}

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2012

Причина в том, что действие завершено без ожидания результата.

вот упрощенная версия моей реализации

после того, как в вашем контроллере вы можете настроить свой ответ, такой как:

public class ContactModel
        {
            public string Name { get; set; }
            public string Email { get; set; }
            public string Website { get; set; }
            public string Phone { get; set; }
            public string Message { get; set; }
            public string Subject { get; set; }
        }

        public ActionResult Index()
        {
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            ContactModel model = new ContactModel();
            model.Email = "test@email.com";
            model.Message = "message";
            model.Name = "name";
            model.Subject = "subject";
            model.Website = "http://test.com";
            ContactForm(model);

            return View();
        }

        /// <summary>
        /// Contacts the form.
        /// </summary>
        /// <returns>Returns view to display the form and fill</returns>
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult ContactForm()
        {
            return View(new ContactModel());
        }

        /// <summary>
        /// Contacts the form.
        /// If model is valid we will go ahead and process emailing 
        /// </summary>
        /// <param name="emailModel">The email model.</param>
        /// <returns></returns>
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ContactForm(ContactModel emailModel)
        {
            if (ModelState.IsValid)
            {

                MailMessage oMail = new MailMessage();

                oMail.From = new MailAddress("no-reply@domain.com", "Web Contact Form");
                oMail.To.Add("email@domain.com");
                oMail.Subject = emailModel.Subject;
                string body = "Name: " + emailModel.Name + "\n"
                              + "Email: " + emailModel.Email + "\n"
                              + "Website: " + emailModel.Website + "\n"
                              + "Phone: " + emailModel.Phone + "\n\n"
                              + emailModel.Message;

                oMail.Body = body;

                if (SendMessage(oMail))
                {
                    return RedirectToAction("Message");
                }
                else
                {
                    return RedirectToAction("Error");
                }
            }
            else
            {
                return View(emailModel);
            }
        }

        /// <summary>
        /// Sends the message.
        /// </summary>
        /// <param name="oMail">The o mail.</param>
        /// <returns>Boolean success.</returns>
        private bool SendMessage(MailMessage oMail)
        {
            SmtpClient client = new SmtpClient("relay-hosting.secureserver.net");
            client.Credentials = new NetworkCredential("email@domain.com", "********", "domaion.com");
            try
            {
                client.Send(oMail);
                return true;
            }
            catch (Exception ex)
            {
                this.exception = ex;
                return false;
            }
        }

Представление перенаправляет, потому что я предполагаю, что вы не разбили Тип запроса на метод. и поэтому он идет прямо на перенаправление.

это делается

[AcceptVerbs (Http.Get)] или [AcceptVerbs (Http.Post)]

надеюсь, это поможет

Для передачи сообщения:

TemData["message"] = "pass message between controllers like this"

public AcionResult Message (строковое сообщение) {// здесь выберите ViewData ["message"] = TempData ["message];

return View (); }

или

    return RedirectToAction("Message", new{message = "pass message between controllers"});
 `enter code here`    where 
public AcionResult Message(string message){
//or if you are using parameter
ViewData["message"] = message;


return View();
}
0 голосов
/ 01 февраля 2012

ваш IIS настроен неправильно, он также устарел, вместо этого вы должны использовать System.Net.Mail.SmtpClient, см. блог SocttGu сообщение об этом

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