我试图找到一种方法,根据是否已检查过他们的电子邮件,向选定的收件人发送电子邮件。我们有一个包含电子邮件的数据库,并且我已手动为结果表添加了一个复选框。点击"发送",我希望电子邮件根据他们是否已经过检查发送给这些人。
我认为最好的方法是创建 ArrayList ,然后使用 message.CC.Add(emailArray),但这会产生无效的参数。 然后我尝试了
string Email = emailArray.ToString()
//and then
message.CC.Add(email)
没有提供错误,但它只发送给任何人点击按钮,IE本人或其他同事,并且不会添加CC。 SMTP等都是正确的,因为电子邮件将发送,而不是发送给被勾选的收件人。
ArrayList emailArray = new ArrayList();
if (Request.Form["chkBox"].Equals(true))
{
emailArray.Add(db.tblMailRecipients.Include(t => t.Email));
}
string email = emailArray.ToString();
message.To.Add(email);
smtp.Send(message);
Response.Redirect("~/Home/Index");
上面的代码显示了我试图收到电子邮件并将其放入Arraylist的位置。
是否与我如何获取复选框值,然后将其与表格中的行相关联(或不?)?
我们正在使用带有C#的ASP.NET MVC。
任何帮助将不胜感激:)。
由于
更新 以下代码用于列出收件人的页面,其中包含以下复选框:
@using (Html.BeginForm("SendEmail", "BulkMail", FormMethod.Post))
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.Email)
</th>
<th>
@Html.DisplayNameFor(model => model.Company)
</th>
<th>
@Html.DisplayNameFor(model => model.LastEmailDate)
</th>
<th>
Check
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.Company)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastEmailDate)
</td>
<td>
<input id="chkBox" name="chkBox" type="checkbox" />
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.MailRecipientId }) |
@Html.ActionLink("Details", "Details", new { id=item.MailRecipientId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.MailRecipientId })
</td>
</tr>
}
</table>
<input type="submit" value="Submit" />
}
此时此消息在发送邮件功能中进行了硬编码。
答案 0 :(得分:1)
你有:
<input id="chkBox" name="chkBox" type="checkbox" />
在foreach
循环内,会重复id="chkBox"
,生成无效的HTML。
您应该做的是在模型中创建一个属性。例如
public bool isChecked {get;set;}
然后使用forloop
显示您的模型:MVC模型绑定器要求字段采用以下格式:[0].PropertyName
@for(var i =0; i < Model.Count(); i++) {
<tr>
<td>
@Html.DisplayFor(m => m[i].LastName)
</td>
...... Removed HTML
<td>
@Html.CheckBoxFor(m => m[i].isChecked)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=Model[i].MailRecipientId }) |
..... Removed HTML
</td>
</tr>
}
提交表格时:
[HttpPost]
public ActionResult SendEmail(List<CLASS_NAME> model)
{
var emails = model.Where(s => s.isChecked).Select(s => s.Email).ToArray();
............/////
}
答案 1 :(得分:1)
对于与此线程缺乏互动而道歉,还有其他需要的东西。首先,感谢您的帮助。我今天看了一下,想出了以下解决方案:
添加
<input type="checkbox" name="chkBox" value="@item.Email" />
进入可以选择电子邮件等的视图。然后我补充道:
message.Bcc.Add(Request.Form["chkBox"])
到SMTP等的控制器,它似乎工作得很好:)。
由于