【问题标题】:Send Email with data (ASP.NET mvc)发送带有数据的电子邮件 (ASP.NET mvc)
【发布时间】:2017-07-21 10:38:14
【问题描述】:

我需要通过按钮点击发送电子邮件。

我为电子邮件制作模型

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

并像这样在Controller中制作方法

 [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();
            }
        }

当我为电子邮件创建新视图时,所有工作都完成了。

但我需要在新视图中执行此操作。

这是我的视图设计 Screen

这是查看代码

  @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>

当我点击标记按钮时,我需要使用默认文本向 EMAIL 列上的地址发送电子邮件。

标记的按钮是表格中的按钮。

默认文本类似于“您添加到系统转到 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; }


}

我该怎么做?

【问题讨论】:

  • 在这里发表你的看法
  • 我希望您不只是发布您的电子邮件凭据。
  • 啊哈哈,当然不是@Juan
  • 更新了我的帖子@teovankot
  • 我没有看到&lt;FORM&gt; 元素,也没有看到任何按钮。我确实看到了一些链接。如果您尝试将任何用户输入发送到服务器,则需要一个带有提交按钮的表单。

标签: c# asp.net asp.net-mvc email


【解决方案1】:

模型旨在从 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})

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

【讨论】:

  • 据我所知,我需要有 SendEmail 视图,但我想直接从这个视图发送电子邮件
  • @E.S:否定。发送电子邮件后,只需将用户重定向到您之前执行的操作(可能是“索引”)。
  • 我正在更新我的答案以说明我提到的重定向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 2021-11-24
  • 2014-10-22
相关资源
最近更新 更多