单击按钮后如何发送电子邮件

时间:2013-05-16 11:16:09

标签: html asp.net-mvc-4

当我点击浏览页面上的按钮时,我正在寻找发送电子邮件的方法。

在我的视图页面上,我有一个文本字段,用户可以在其中填写来自接收方的电子邮件

 @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)的测试电子邮件” 谁能给我一个简单的例子呢?

2 个答案:

答案 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"); 

行动之外的方法。