我需要按按钮单击发送电子邮件。
我为电子邮件制作模型
public class MailModel
{
public string From { get; set; }
public string To { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public bool IsShowAlert { get; set; }
}
并在这样的控制器中制作方法
[HttpPost]
public ViewResult Index(Models.MailModel _objModelMail)
{
if (ModelState.IsValid)
{
MailMessage mail = new MailMessage();
mail.To.Add(_objModelMail.To);
mail.From = new MailAddress(_objModelMail.From);
mail.Subject = _objModelMail.Subject;
string Body = _objModelMail.Body;
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential
("suhomlin.eugene95@gmail.com", "dontoretto23");// Enter seders User name and password
smtp.EnableSsl = true;
smtp.Send(mail);
return View("Index", (IEnumerable<Clients>) _objModelMail);
}
else
{
return View();
}
}
当我为电子邮件创建新视图时,所有工作是
,但我需要在新视图中进行此操作。
这是我的观点设计屏幕
这是查看码
@model IEnumerable<SmartSolutions.Models.Clients>
@{
Layout = "~/Views/Shared/_Layout2.cshtml";
}
@{
ViewBag.Title = "Список клиентов";
}
<table class="table">
@{int rowNo = 0;}
<tr style="background: #d1d3d4">
<th></th>
<th style="font-size: 20px; text-align: center;">
@Html.DisplayNameFor(model => model.Email)
</th >
<th style="font-size: 20px; text-align: center;">
@Html.DisplayNameFor(model => model.UserName)
</th>
<th style="font-size: 20px; text-align: center;">
@Html.DisplayNameFor(model => model.Position)
</th>
<th></th>
</tr>
<tr>
<td style="height: 40px; width: 40px; background: red;">
<a href='@Url.Action("Create", "Clients")'>
<img style="object-fit: cover;" src='@Url.Content("~/Images/plus.png")' />
</a>
</td>
</tr>
@foreach (var item in Model)
{
<tr >
<td class="point">
@(rowNo += 1)
</td>
<td style="text-align: center; font-size: 18px;">
@Html.DisplayFor(modelItem => item.Email)
</td>
<td style="text-align: center; font-size: 18px;">
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td style="text-align: center; font-size: 18px;">
@Html.DisplayFor(modelItem => item.Position)
</td>
<td style="text-align: end;">
@Html.ActionLink("Отправить приглашение", "Details", new {id = item.ID}, new {@class = "sendinviteclass"})
<a href='@Url.Action("Edit", "Clients", new {id = item.ID})'>
<img src='@Url.Content("~/Images/Edit.png")'/>
</a>
<!-- @Html.ActionLink("Редактировать", "Edit", new {id = item.ID}, new {@class = "editclass"})-->
<a href='@Url.Action("Delete", "Clients", new {id = item.ID})'>
<img src='@Url.Content("~/Images/Delete.png")'/>
</a>
</td>
</tr>
}
</table>
当我单击标记按钮时,我需要将电子邮件发送到带有默认文本的电子邮件列上的adress。
标记按钮是表中的按钮。
默认文本是smth,就像"您添加到系统中,请访问testwebsite.com。您的密码是数据库中的PasswordField
。"
这是客户模型
public class Clients
{
public int ID { get; set; }
[Required]
[Display(Name = "Email")]
[EmailAddress]
public string Email { get; set; }
[Display(Name = "Ф.И.О")]
public string UserName { get; set; }
[Display(Name = "Должность")]
public string Position { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Пароль")]
public string Password { get; set; }
}
我如何做到这一点?
模型旨在从UI来回传递数据。在这种情况下,您并不是真正从用户那里收集信息。你已经有。
有几种方法可以做到这一点。我个人建议您采取的操作可以采用ID,删除用户信息并创建电子邮件:
public ActionResult SendEmail(int id)
{
//Retrieve the user data and create e-mail here.
return RedirectToAction("Index","YourController");
}
请注意,末尾的重定向将用户发送回到触发电子邮件发送的视图。
然后在您的视图中:
@Html.ActionLink("Send E-mail", "SendEmail", new {id = item.ID})
这是一个过度简化的版本,您应该考虑某些事情,例如安全性和帖子,但我认为您明白了...: - )