发送电子邮件列表c#

发送电子邮件列表c#,c#,asp.net,.net,C#,Asp.net,.net,我有一个“文件夹访问”页面和一个复选框 今天,在我的.cs中,对于此文件夹访问中选中的每个复选框,我向此文件夹的所有者发送电子邮件。 为了获得这封电子邮件,我在我的页面中创建了一个HiddenField来发送电子邮件 但是,现在,每个文件夹都有一个以上的所有者。如果继续这样,我有重复的行。 如何获得每个文件夹的电子邮件列表 我的.aspx <Columns> <asp:BoundField DataField="FolderAccess" HeaderText="Fol

我有一个“文件夹访问”页面和一个复选框

今天,在我的
.cs
中,对于此文件夹访问中选中的每个
复选框
,我向此文件夹的所有者发送电子邮件。 为了获得这封电子邮件,我在我的页面中创建了一个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>

我想您可以让ListRequest对象包含电子邮件地址列表。然后,隐藏字段将包含该列表

public class ListRequest
{
    public List<string> EmailAddresses { get; set; }
    public string FolderAccess { get; set; }
}
公共类ListRequest
{
公共列表电子邮件地址{get;set;}
公共字符串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);
    }
}
if(check.Checked==true)
{
foreach(字符串email in(Listhd1.Value))
{
System.Net.Mail.MailMessage objEmail=新系统.Net.Mail.MailMessage();
objEmail.From=新邮件地址(“caio。jesus@br.com“,”XXX“);
objEmail.To.Add(电子邮件);
objEmail.Priority=System.Net.Mail.MailPriority.High;
objEmail.IsBodyHtml=true;
objectjemail.Subject=“系统安全性-新要求。”;
objEmail.Body=“TEST”;
objEmail.SubjectEncoding=Encoding.GetEncoding(“ISO-8859-1”);
objEmail.BodyEncoding=Encoding.GetEncoding(“ISO-8859-1”);
SmtpClient objSmtp=新SmtpClient(“XXX”);
objSmtp.EnableSsl=true;
objSmtp.Port=25;
凭证=新的网络凭证(“caio。jesus@br.com“,”XXX“);
objSmtp.Send(objEmail);
}
}

我想您可以让ListRequest对象包含电子邮件地址列表。然后,隐藏字段将包含该列表

public class ListRequest
{
    public List<string> EmailAddresses { get; set; }
    public string FolderAccess { get; set; }
}
公共类ListRequest
{
公共列表电子邮件地址{get;set;}
公共字符串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);
    }
}
if(check.Checked==true)
{
foreach(字符串email in(Listhd1.Value))
{
System.Net.Mail.MailMessage objEmail=新系统.Net.Mail.MailMessage();
objEmail.From=新邮件地址(“caio。jesus@br.com“,”XXX“);
objEmail.To.Add(电子邮件);
objEmail.Priority=System.Net.Mail.MailPriority.High;
objEmail.IsBodyHtml=true;
objectjemail.Subject=“系统安全性-新要求。”;
objEmail.Body=“TEST”;
objEmail.SubjectEncoding=Encoding.GetEncoding(“ISO-8859-1”);
objEmail.BodyEncoding=Encoding.GetEncoding(“ISO-8859-1”);
SmtpClient objSmtp=新SmtpClient(“XXX”);
objSmtp.EnableSsl=true;
objSmtp.Port=25;
凭证=新的网络凭证(“caio。jesus@br.com“,”XXX“);
objSmtp.Send(objEmail);
}
}

与约翰·卡夫的建议不同的是,如果您仍然想保留
字符串而不是列表,则可以使用CSV电子邮件地址

String s = "email1@email.com, email2@email.com, email3@email.com";
然后使用正则表达式进行拆分(这需要额外的空间):


John Kraft建议的另一种选择是,如果您仍然希望保留
字符串而不是列表,则可以使用CSV电子邮件地址

String s = "email1@email.com, email2@email.com, email3@email.com";
然后使用正则表达式进行拆分(这需要额外的空间):


但这样我就不会在我的文件夹访问页面中显示重复的行了?或者,如果我使用列表发送电子邮件,它会继续显示一行到文件夹访问?我的重点是不要在每个“文件夹访问”中显示多行。我建议的方法仍然是在每个文件夹中只显示一行。一个问题。显示一个使用ToList()的错误。我正在使用System.Collections.Generic。和System.Linq。在listRequest.Email=reader[“Email”].ToList()中;对您还必须更改用于检索数据的代码。要使用ToList(),我需要在代码中更改什么?我正在使用System.Collections.Generic。和System.Linq,但不解析。但这样我就不会在文件夹访问页中显示重复的行了?或者,如果我使用列表发送电子邮件,它会继续显示一行到文件夹访问?我的重点是不要在每个“文件夹访问”中显示多行。我建议的方法仍然是在每个文件夹中只显示一行。一个问题。显示一个使用ToList()的错误。我正在使用System.Collections.Generic。和System.Linq。在listRequest.Email=reader[“Email”].ToList()中;对您还必须更改用于检索数据的代码。要使用ToList(),我需要在代码中更改什么?我正在使用System.Collections.Generic。和系统。林克,但不要解决。在你进入regex之前,我一直和你在一起电子邮件地址不能包含逗号,所以为什么不使用string.Split?@JohnKraft我提到了原因。有些时候,用户在逗号后输入空格(至少我的用户是这样做的)。在你进入regex之前,我一直支持你电子邮件地址不能包含逗号,所以为什么不使用string.Split?@JohnKraft我提到了原因。有些时间用户在逗号后输入空格(至少我的用户是这样)。