当我点击浏览页面上的按钮时,我正在寻找发送电子邮件的方法。
在我的视图页面上,我有一个文本字段,用户可以在其中填写来自接收方的电子邮件
@Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail reveiver"})
电子邮件必须发送到点击按钮后填写在文本字段中的电子邮件。
<input type="submit" class="btn btn-large btn-success" value="Send mail" />
发件人也可以在文本字段中填写他的电子邮件
@Html.TextBoxFor(m => m.SenderMail, new { @placeholder="E-mail sender"})
邮件的文字可能是这样的:“这是来自(SenderMail)的测试电子邮件” 谁能给我一个简单的例子呢?
答案 0 :(得分:0)
创建一个带有动作帖的控制器。
[HttpPost]
public ActionResult myaction(string ReceiverMail)
{
if (ModelState.IsValid)
{
// ..
new mailController().sendMail(ReceiverMail).Deliver(); // Send mail
return RedirectToRoute("Usuario_default", new RouteValueDictionary { { "controller", "home" }, { "action", "logon" } });
}
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return View(viewModel);
}
使用ActionMailer发送电子邮件。
答案 1 :(得分:0)
首先,您可以创建控制器扩展方法:
public static partial class ControllerExtensions
{
public static string RenderPartialViewToString(this ControllerBase controller, string partialPath, object model)
{
if (string.IsNullOrEmpty(partialPath))
partialPath = controller.ControllerContext.RouteData.GetRequiredString("action");
controller.ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, partialPath);
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
// copy model state items to the html helper
foreach (var item in viewContext.Controller.ViewData.ModelState)
if (!viewContext.ViewData.ModelState.Keys.Contains(item.Key))
{
viewContext.ViewData.ModelState.Add(item);
}
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
}
然后,创建一个接收SenderEmail receiverEmail的控制器动作方法。 然后创建模板变量
var template= this.RenderPartialViewToString("MailToSend", model);
这会将View MailToSend转换为字符串。
之后,您可以使用MailMessage类发送电子邮件:
SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com"; //if your email is gmail
client.Port = 25;
client.UseDefaultCredentials = false;
client.Credentials = smtpCrede;
client.EnableSsl = true;
MailMessage message = new MailMessage();
message.From = new MailAddress(here goes email");
message.To.Add(new MailAddress(email));
message.IsBodyHtml = true;
message.Body = template;
client.Send(message);
return true;
并宣布:
private NetworkCredential smtpCrede = new NetworkCredential("your email, "your email password");
行动之外的方法。