簡體   English   中英

發送電子郵件列表c#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM