[英]Send Email List c#
我有一個帶有“文件夾訪問”和一個CheckBox
。
今天,在我的.cs
,對於此文件夾訪問權限中選中的每個checkbox
,我都會向該文件夾的所有者發送電子郵件。 為了獲得此電子郵件,我在頁面中創建了“電子郵件的HiddenField”。
但是,現在,每個文件夾都有一個以上的所有者。 如果繼續這種方式,我有重復的行。 如何獲取每個文件夾的電子郵件列表?
我的.aspx
<Columns>
<asp:BoundField DataField="FolderAccess" HeaderText="Folder Access" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Text="Access to Read" OnCheckedChanged="CheckBox1_ChangeCheck"
AutoPostBack="true" />
<asp:HiddenField ID="Email" runat="server" Value='<%# Bind("Email") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
我的.cs
public class ListRequest
{
public string Email { get; set; }
public string FolderAccess { get; set; }
}
public List<ListRequest> PreencheValores(SqlDataReader reader)
{
var lista = new List<ListRequest>();
while (reader.Read())
{
var listRequest = new ListRequest();
listRequest.Email = reader["Email"].ToString();
listRequest.FolderAccess = reader["FolderAccess"].ToString();
lista.Add(listRequest);
}
return lista;
}
public List<ListRequest> ConsultarRequest()
{
var lstRetorno = new List<ListRequest>();
using (objConexao = new SqlConnection(strStringConexao))
{
using (objCommand = new SqlCommand(strSelectPorID, objConexao))
{
try
{
objConexao.Open();
var objDataReader = objCommand.ExecuteReader();
if (objDataReader.HasRows)
lstRetorno = PreencheValores(objDataReader);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
objConexao.Close();
}
}
}
return lstRetorno;
}
protected void btnSend_OnClick(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView.Rows)
{
CheckBox check = (CheckBox)row.FindControl("CheckBox1");
HiddenField hd1 = (HiddenField)row.FindControl("Email");
string email = hd1.Value.ToString();
if (check.Checked == true)
{
System.Net.Mail.MailMessage objEmail = new System.Net.Mail.MailMessage();
objEmail.From = new MailAddress("caio.jesus@br.com", "XXX");
objEmail.To.Add(email);
objEmail.Priority = System.Net.Mail.MailPriority.High;
objEmail.IsBodyHtml = true;
objEmail.Subject = "System NDRSecurity - Novas Requisições.";
objEmail.Body = "TEST";
objEmail.SubjectEncoding = Encoding.GetEncoding("ISO-8859-1");
objEmail.BodyEncoding = Encoding.GetEncoding("ISO-8859-1");
SmtpClient objSmtp = new SmtpClient("XXX");
objSmtp.EnableSsl = true;
objSmtp.Port = 25;
objSmtp.Credentials = new NetworkCredential("caio.jesus@br.com", "XXX");
objSmtp.Send(objEmail);
}
}
Response.Redirect("home.aspx");
}
我想您可以使ListRequest對象包含電子郵件地址列表。 然后,您的隱藏字段將包含該列表。
public class ListRequest
{
public List<string> EmailAddresses { get; set; }
public string FolderAccess { get; set; }
}
然后,您必須更改onlcick以遍歷hd1變量中的值。
if (check.Checked == true)
{
foreach(string email in (List<string>hd1.Value))
{
System.Net.Mail.MailMessage objEmail = new System.Net.Mail.MailMessage();
objEmail.From = new MailAddress("caio.jesus@br.com", "XXX");
objEmail.To.Add(email);
objEmail.Priority = System.Net.Mail.MailPriority.High;
objEmail.IsBodyHtml = true;
objEmail.Subject = "System NDRSecurity - Novas Requisições.";
objEmail.Body = "TEST";
objEmail.SubjectEncoding = Encoding.GetEncoding("ISO-8859-1");
objEmail.BodyEncoding = Encoding.GetEncoding("ISO-8859-1");
SmtpClient objSmtp = new SmtpClient("XXX");
objSmtp.EnableSsl = true;
objSmtp.Port = 25;
objSmtp.Credentials = new NetworkCredential("caio.jesus@br.com", "XXX");
objSmtp.Send(objEmail);
}
}
如果您仍然想保留String
而不是List,則可以替代John Kraft的建議,即可以使用電子郵件地址的CSV。
String s = "email1@email.com, email2@email.com, email3@email.com";
然后使用正則表達式進行分割(這會占用額外的空間):
foreach(string email in Regex.Split(s, @"\s*[,;]\s*"))
{ ... }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.