发送带有数据的电子邮件(ASP.NET MVC)



我需要按按钮单击发送电子邮件。

我为电子邮件制作模型

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})

这是一个过度简化的版本,您应该考虑某些事情,例如安全性和帖子,但我认为您明白了...: - )

最新更新