我已使用以下代码创建了与我们联系的表单:
ConatModels.cs
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace DemoVer1.Models
{
public class ContactModels
{
[Required(ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
public string Supject { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Message { get; set; }
}
}
HomeController.cs:
using DemoVer1.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Web.Mvc;
namespace DemoVer1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact(ContactModels c)
{
if (ModelState.IsValid)
{
try
{
MailMessage msg = new MailMessage();
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
MailAddress from = new MailAddress(c.Email.ToString());
StringBuilder sb = new StringBuilder();
msg.From = new MailAddress("sender@gmail.com");// replace it with sender email address
msg.To.Add("recipient@gmail.com");// replace ti with recipient email address
msg.Subject = "Contact Us";
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential("sender@gmail.com", " email password");
smtp.Port = 587;
sb.Append("First name: " + c.FirstName);
sb.Append(Environment.NewLine);
sb.Append("Last name: " + c.Supject);
sb.Append(Environment.NewLine);
sb.Append("Email: " + c.Email);
sb.Append(Environment.NewLine);
sb.Append("Comments: " + c.Message);
msg.Body = sb.ToString();
smtp.Send(msg);
msg.Dispose();
return View("Success");
}
catch (Exception)
{
return View("Error");
}
}
return View();
}
}
}
Contact.cshtml
@model DemoVer1.Models.ContactModels
@{
ViewBag.Title = "Contact";
}
<h1>contact us</h1>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="row">
@Html.LabelFor(model => model.FirstName, "First Name:")
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="row">
@Html.LabelFor(model => model.Supject, "Last Name:")
@Html.EditorFor(model => model.Supject)
</div>
<div class="row">
@Html.LabelFor(model => model.Email, "Email:")
@Html.EditorFor(model => model.Email)
</div>
<div class="row">
@Html.LabelFor(model => model.Message, "Comments:")
@Html.TextAreaFor(model => model.Message)
</div>
<div class="row">
<input type="submit" value="submit" />
<input type="reset" value="reset" />
</div>
}
如果我运行它,我会收到错误!我不知道是什么问题。 我感谢您的帮助。在此先感谢:)
答案 0 :(得分:1)
使用:
using System;
using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
using System.Web.Mvc;
using ProjectName.Models;
控制器:
[HttpPost]
public async Task<ActionResult> Contact(FormCollection C)
{
string Name = C["name"];
string Email = C["email"];
string Message = C["message"];
if (ModelState.IsValid)
{
var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
var message = new MailMessage();
message.To.Add(new MailAddress("yourmail@yahoo.com")); // replace with valid value
message.From = new MailAddress("yourmail@Domain.com"); // replace with valid value
message.Subject = "Your email subject";
message.Body = string.Format(body, Name, Email, Message);
message.IsBodyHtml = true;
using (var smtp = new SmtpClient())
{
var credential = new NetworkCredential
{
UserName = "yourmail@Domain.com", // replace with valid value
Password = "********" // replace with valid value
};
smtp.Credentials = credential;
smtp.Host = "webmail.Domain.com";//address webmail
smtp.Port = 587;
smtp.EnableSsl = false;
await smtp.SendMailAsync(message);
return RedirectToAction("Index");
}
}
return View();
}
设置为web.config:
<system.net>
<mailSettings>
<smtp from="yourmail@Domain.com">
<network host="webmail.Domain.com"
port="587"
userName="yourmail@Domain.com"
password="password"
enableSsl="false" />
</smtp>
</mailSettings>
</system.net>
视图:
@using (Html.BeginForm("Contact", "Home", FormMethod.Post, new { @class = "contact-list", id = "contacts_form", role = "form", target = "_blank" }))
{
@Html.TextBox("name", null, new { @class = "form_item", @required = "required", placeholder = "Name", type = "text" })
@Html.TextBox("email", null, new { @class = "form_item", @required = "required", placeholder = "E-mail", type = "email" })
@Html.TextBox("message", null, new { @class = "form_item", @required = "required", placeholder = "Message", type = "text" })
<input type="submit" value="subscribe" />
}
答案 1 :(得分:0)
因为表单是一个帖子表单,你需要编写这样的动作:
[HttpPost]
public ActionResult Contact(ContactModels c)
{
//your code
}
如评论所述,您还需要添加[Get] Action:
[HttpGet]
public ActionResult Contact()
{
//your code
}