【问题标题】:HTTP Post Error C# Contact pageHTTP Post 错误 C# 联系页面
【发布时间】:2016-03-17 22:44:31
【问题描述】:

我创建了一个 MVC 项目,我正在尝试构建一个联系页面,但我的 HTTP Post 出现问题。基本上,当它被包含时,我在页面上得到一个页面未找到错误(在提交表单等之前),当它不包含时没有问题。 感谢所有帮助

  [HttpPost]
    public ActionResult Contact(ContactModels c)
    {
        ViewBag.Message = "Your contact page.";
        if (ModelState.IsValid)
        {
            try
            {
                MailMessage msg = new MailMessage();
                SmtpClient client = new SmtpClient();
                MailAddress from = new MailAddress(c.Email.ToString());
                StringBuilder sb = new StringBuilder();
                msg.To.Add("ag@gmail.com");
                msg.Subject = "Contact";
                msg.IsBodyHtml = false;
                client.Host = "smtp.gmail.com";
                client.Port = 587;
                client.EnableSsl = true;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Credentials = new System.Net.NetworkCredential("your gmail email address", "your gmail email address password");
                sb.Append("First Name: " + c.FirstName);
                sb.Append(Environment.NewLine);
                sb.Append("last Name: " + c.LastName);
                sb.Append(Environment.NewLine);
                sb.Append("Email: " + c.Email);
                sb.Append(Environment.NewLine);
                sb.Append("Comments: " + c.Comment);

                msg.Body = sb.ToString();
                client.Send(msg);
                msg.Dispose();
                return View("Success");
            }
            catch (Exception)
            {
                return View("Error");
            }



        }
        return View();
    }

编辑:错误消息 “/”应用程序中的服务器错误。

找不到资源。

描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的网址:/Home/Contact

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.6.114.0

【问题讨论】:

  • “如果有人能指出一个好的虚拟 Smtp 服务器的方向来正确测试这个,我将不胜感激” 创建一个 gmail 帐户进行测试,它是免费的。

标签: c# model-view-controller smtp contact-form


【解决方案1】:

如果我对您的理解正确,您会在提交表单之前收到页面未找到错误,这意味着您在加载表单时?如果是这种情况,我认为问题在于当您将操作标记为发布时,它不会随获取请求一起运行。加载表单的请求将是一个获取请求。

请尝试创建第二个返回视图但接受获取请求的操作。

public ActionResult Contact()
{
    return View();  // probably don't need to do much of anything here other than return the view with the form.
}

这将处理将显示表单的获取请求,然后您现有的操作将处理表单的发布。

【讨论】:

  • 完成了!!!!不需要“获取”请求,但单独的控制器可以解决问题:-)
【解决方案2】:

你能试试这个吗 client.enablessl = true; client.port = 465;

【讨论】:

  • 试过了,同样的问题。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2011-03-26
相关资源
最近更新 更多