【发布时间】:2018-12-21 15:38:29
【问题描述】:
基本上,我有一个 html 表单,我想从中获取用户输入,生成电子邮件正文,然后发送电子邮件。我以前从未编写过这样的程序,所以过去几天我一直在研究从网站发送电子邮件的不同方法,但我发现的示例都与我的确切情况无关。用我发现的不同方法鬼混也没有结果。
就目前而言,我有一个声明每个字符串的模型:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace myWebsite.Models
{
public class ServiceRequest
{
[Key]
public int serviceRequestID { get; set; }
[Required]
public string serviceRequestName { get; set; }
[Required]
public string serviceRequestEmail { get; set; }
public string serviceRequestCompany { get; set; }
public string serviceRequestAddress { get; set; }
[Required]
public string serviceType { get; set; }
public string serviceRequestCity { get; set; }
public string serviceRequestState { get; set; }
public string serviceRequestZip { get; set; }
[Required]
public string serviceRequestNumber { get; set; }
public string serviceRequestComments { get; set; }
}
}
然后在视图中,我使用 @html 帮助器创建了表单,将模型中的字符串链接到用户输入字段:
@model myWebsite.ServiceRequest
@using (Html.BeginForm("Email", "ServiceRequestsController", FormMethod.Post))
{
<div class="servicesReq">
<div class="serviceReqForm">
<div class="col-left">
<label>
<span class="required">* </span><span>Name:</span><br />
@Html.TextBoxFor(model => model.serviceRequestName)
</label><br />
<label>
<span class="required">* </span><span>Email:</span><br />
@Html.TextBoxFor(model => model.serviceRequestEmail)
</label><br />
<label>
<span>Company:</span><br />
@Html.TextBoxFor(model => model.serviceRequestCompany)
</label><br />
<label>
<span>Address:</span><br />
@Html.TextBoxFor(model => model.serviceRequestAddress)
</label><br /><br />
</div>
<div class="serviceTypeGrid">
<span class="required">* </span><span>Please choose what type of servicing you require:</span><br /><br />
</div>
<div class="col-left2">
<label class="serviceType">
@Html.RadioButton("serviceType", "Electrical") Electrical<br/>
@Html.RadioButton("serviceType", "Lighting") Lighting<br />
@Html.RadioButton("serviceType", "Energy") Energy<br />
@Html.RadioButton("serviceType", "Multiple") Multiple
</label><br /><br />
</div>
<div class="col-right">
<label>
<span>City:</span><br />
@Html.TextBoxFor(model => model.serviceRequestCity)
</label><br />
<label>
<span>State:</span><br />
@Html.TextBoxFor(model => model.serviceRequestState)
</label><br />
<label>
<span>Zip Code:</span><br />
@Html.TextBoxFor(model => model.serviceRequestZip)
</label><br />
<label>
<span class="required">* </span><span>Phone Number:</span><br />
@Html.TextBoxFor(model => model.serviceRequestNumber)
</label><br />
</div>
<label class="commentText">
<span>Comments:</span><br />
@Html.TextAreaFor(model => model.serviceRequestComments, new { @class = "servReqComment" })
</label>
<div class="formSubmitButton">
<input type="submit" value="Submit" /><br />
<br />
</div>
</div>
</div>
}
最后是我的控制器逻辑 - 这就是我几乎完全迷失的地方:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using myWebsite.Models;
namespace myWebsite.Controllers
{
public class ServiceRequestsController : Controller
{
private CuttingEdgeWebsite2_0Context db = new CuttingEdgeWebsite2_0Context();
// GET: ServiceRequests
public ActionResult ServiceRequest()
{
return View();
}
}
}
正如我之前所说,我已经查找了几种不同的方法,但它们都涉及对电子邮件正文进行硬编码。我用我有限的知识尝试过的一切,我无法从表单上的用户输入生成正文。虽然我对如何实际发送邮件有某种想法,但对该过程的任何深入澄清也将非常有帮助。如果有任何我未在此处提供的信息可能对您有用,请告诉我。
【问题讨论】:
-
这里有很多东西:构建邮件正文、创建和发送邮件消息,以及在控制器中执行此操作。我认为你应该把它分解,一次只看一件。我要做的第一件事是确定您希望您的电子邮件采用什么格式(html 格式与否、硬编码文本等)。最终,您必须创建一个包含电子邮件正文的字符串,因此您应该使用一种方法来接受传入对象并返回电子邮件正文的字符串对象。
标签: c# html asp.net-mvc razor system.net.mail