C# 如何添加从MySQL检索到的多个电子邮件地址收件人?

C# 如何添加从MySQL检索到的多个电子邮件地址收件人?,c#,asp.net,arrays,email,C#,Asp.net,Arrays,Email,我在下面的这行中遇到一个错误: email = myDataReader.GetValue(i).ToString(); 我想做的就是从MySQL中检索多个电子邮件地址并发送电子邮件 根据我找到的示例,它存储在arraylist中,但在我的例子中,它给出了错误 protected void searchEmail () { MySqlConnection con = new MySqlConnection("server=localhost;userid=root;password=;

我在下面的这行中遇到一个错误:

email = myDataReader.GetValue(i).ToString();
我想做的就是从MySQL中检索多个电子邮件地址并发送电子邮件

根据我找到的示例,它存储在arraylist中,但在我的例子中,它给出了错误

protected void searchEmail ()
{
    MySqlConnection con = new MySqlConnection("server=localhost;userid=root;password=;database=obsystem");
    con.Open();

    MySqlCommand cmd = new MySqlCommand("SELECT cusEmail,cusFName,newBalance FROM monthlytracker WHERE MONTH(paymentDate)='" + mm + "' AND YEAR(paymentDate)='" + year + "'AND status='" + Unpaid + "'",con);

    MySqlDataReader myDataReader = cmd.ExecuteReader();

    //ArrayList list_emails = new ArrayList();

    int i = 0;
    //string email = string.Empty;

    List<CustInfo> list_emails = new List<CustInfo>();

    CustInfo customer;

    while (myDataReader.Read())
    {
        //list_emails.Add(myDataReader.GetValue(i).ToString());//add to array list
        //i = i++; //increment or ++i

        list_emails.Add(new CustInfo
        {
            Email = myDataReader.GetValue(0).ToString(),
            Name = myDataReader.GetValue(1).ToString(),
            Balance = myDataReader.GetValue(2).ToString()
        });
    }

    con.Close(); //Close connection

    foreach (CustInfo cus in list_emails)
    {
        var fromAddress = new MailAddress("veolbakhda@gmail.com", "Shilpesh");
        var toAddress = new MailAddress(cus.Email);
        const string fromPassword = "XXXXXXXX";
        string fullSubj = "Payment Reminder - Madu D. Trading (" + month + " , " + year + ")";
        //const string subject = fullSubj;
        //const string body = "Body";
        string body1 = cus.Name;
        string body2 = cus.Balance;
        string bodyfull = body1 + body2;

        var smtp = new SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
        };

        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = fullSubj,
            Body = bodyfull
        })
        {
            smtp.Send(message);
        }
    }
}
受保护的无效搜索电子邮件()
{
MySqlConnection con=newmysqlconnection(“server=localhost;userid=root;password=database=obsystem”);
con.Open();
MySqlCommand cmd=new MySqlCommand(“从monthlytracker中选择cusEmail、cusFName、newBalance,其中月(paymentDate)='“+mm+”,年(paymentDate)='“+YEAR+”,状态='“+naveled+”,con);
MySqlDataReader myDataReader=cmd.ExecuteReader();
//ArrayList_emails=新建ArrayList();
int i=0;
//string email=string.Empty;
List List_电子邮件=新列表();
客户信息;
while(myDataReader.Read())
{
//list_emails.Add(myDataReader.GetValue(i).ToString());//添加到数组列表
//i=i++;//增量或++i
列出电子邮件。添加(新客户信息)
{
Email=myDataReader.GetValue(0).ToString(),
Name=myDataReader.GetValue(1).ToString(),
Balance=myDataReader.GetValue(2.ToString)()
});
}
con.Close();//关闭连接
foreach(列表中的客户信息)
{
var fromAddress=新邮件地址(“veolbakhda@gmail.com“,”Shilpesh“);
var toAddress=新邮件地址(cus.Email);
常量字符串fromPassword=“XXXXXXXX”;
string fullsub=“付款提醒-马杜交易(“+月+”,“+年+”);
//const string subject=fullsubc;
//常量字符串body=“body”;
字符串body1=cus.Name;
弦体2=重心平衡;
字符串bodyfull=body1+body2;
var smtp=新SmtpClient
{
Host=“smtp.gmail.com”,
端口=587,
EnableSsl=true,
DeliveryMethod=SmtpDeliveryMethod.Network,
UseDefaultCredentials=false,
凭据=新网络凭据(fromAddress.Address,fromPassword)
};
使用(var message=新邮件消息(fromAddress,toAddress)
{
主题=完整主题,
身体=全身
})
{
smtp.Send(message);
}
}
}

您将变量email声明为int

int i = 0, email = 0;
然后尝试存储一个字符串:

email = myDataReader.GetValue(0).ToString();
将变量email声明为字符串:

string email = string.Empty;
您不需要i变量:

int i = 0

可以删除

评论后编辑: 您可以为客户信息创建一个类。我不知道您的字段是如何调用的,但如果说它们是
cusName
balance
,您可以这样做:

public class CustInfo {
public string Email {get; set;}
public string Name  {get; set;}
public string Balance {get; set;}
}


protected void searchEmail ()
{
 MySqlConnection con = new MySqlConnection("server=localhost;userid=root;password=;database=obsystem");
 con.Open();

 MySqlCommand cmd = new MySqlCommand("SELECT cusEmail, cusName, balance from monthlytracker AND MONTH(paymentDate)='" + mm + "' AND YEAR(paymentDate)='" + year + "'AND status='" + Unpaid + "'",con);

 MySqlDataReader myDataReader = cmd.ExecuteReader();

 List<CustInfo> list_emails = new List<CustInfo>();

 CustInfo customer;

 while (myDataReader.Read())
    {
        list_emails.Add(new CustInfo {
                          Email = myDataReader.GetValue(0).ToString(),
                          Name =  myDataReader.GetValue(1).ToString(),
                          Balance = myDataReader.GetValue(2).ToString() 
                        });
    }

    con.Close(); //Close connection 


    foreach (CustInfo customer in list_emails)

    {

        MailMessage mail = new MailMessage();

        mail.To.Add(customer.Email);

        mail.Subject = "Welcome to C#";

        mail.From = new MailAddress("");

        mail.Body = "Test";

        // add the values from the customer object to your mail => fe: mail.Body.Replace("$$name$$", customer.Name);

        SmtpClient smtp = new SmtpClient("SMTP Server");

        smtp.Send(mail);

 }
}
公共类CustInfo{
公共字符串电子邮件{get;set;}
公共字符串名称{get;set;}
公共字符串余额{get;set;}
}
受保护的无效搜索电子邮件()
{
MySqlConnection con=newmysqlconnection(“server=localhost;userid=root;password=database=obsystem”);
con.Open();
MySqlCommand cmd=new MySqlCommand(“选择cusEmail、cusName、monthlytracker和MONTH中的余额(paymentDate)='“+mm+”,以及YEAR(paymentDate)='“+YEAR+”,状态='“+naveled+”,con);
MySqlDataReader myDataReader=cmd.ExecuteReader();
List List_电子邮件=新列表();
客户信息;
while(myDataReader.Read())
{
列出电子邮件。添加(新客户信息){
Email=myDataReader.GetValue(0).ToString(),
Name=myDataReader.GetValue(1).ToString(),
Balance=myDataReader.GetValue(2.ToString)()
});
}
con.Close();//关闭连接
foreach(列表\电子邮件中的客户信息)
{
MailMessage mail=新的MailMessage();
mail.To.Add(customer.Email);
mail.Subject=“欢迎来到C#”;
mail.From=新邮件地址(“”);
mail.Body=“Test”;
//将customer对象中的值添加到mail=>fe:mail.Body.Replace(“$$name$$”,customer.name);
SmtpClient smtp=新SmtpClient(“smtp服务器”);
smtp.发送(邮件);
}
}

您将变量email声明为int

int i = 0, email = 0;
然后尝试存储一个字符串:

email = myDataReader.GetValue(0).ToString();
将变量email声明为字符串:

string email = string.Empty;
您不需要i变量:

int i = 0

可以删除

评论后编辑: 您可以为客户信息创建一个类。我不知道您的字段是如何调用的,但如果说它们是
cusName
balance
,您可以这样做:

public class CustInfo {
public string Email {get; set;}
public string Name  {get; set;}
public string Balance {get; set;}
}


protected void searchEmail ()
{
 MySqlConnection con = new MySqlConnection("server=localhost;userid=root;password=;database=obsystem");
 con.Open();

 MySqlCommand cmd = new MySqlCommand("SELECT cusEmail, cusName, balance from monthlytracker AND MONTH(paymentDate)='" + mm + "' AND YEAR(paymentDate)='" + year + "'AND status='" + Unpaid + "'",con);

 MySqlDataReader myDataReader = cmd.ExecuteReader();

 List<CustInfo> list_emails = new List<CustInfo>();

 CustInfo customer;

 while (myDataReader.Read())
    {
        list_emails.Add(new CustInfo {
                          Email = myDataReader.GetValue(0).ToString(),
                          Name =  myDataReader.GetValue(1).ToString(),
                          Balance = myDataReader.GetValue(2).ToString() 
                        });
    }

    con.Close(); //Close connection 


    foreach (CustInfo customer in list_emails)

    {

        MailMessage mail = new MailMessage();

        mail.To.Add(customer.Email);

        mail.Subject = "Welcome to C#";

        mail.From = new MailAddress("");

        mail.Body = "Test";

        // add the values from the customer object to your mail => fe: mail.Body.Replace("$$name$$", customer.Name);

        SmtpClient smtp = new SmtpClient("SMTP Server");

        smtp.Send(mail);

 }
}
公共类CustInfo{
公共字符串电子邮件{get;set;}
公共字符串名称{get;set;}
公共字符串余额{get;set;}
}
受保护的无效搜索电子邮件()
{
MySqlConnection con=newmysqlconnection(“server=localhost;userid=root;password=database=obsystem”);
con.Open();
MySqlCommand cmd=new MySqlCommand(“选择cusEmail、cusName、monthlytracker和MONTH中的余额(paymentDate)='“+mm+”,以及YEAR(paymentDate)='“+YEAR+”,状态='“+naveled+”,con);
MySqlDataReader myDataReader=cmd.ExecuteReader();
List List_电子邮件=新列表();
客户信息;
while(myDataReader.Read())
{
列出电子邮件。添加(新客户信息){
Email=myDataReader.GetValue(0).ToString(),
Name=myDataReader.GetValue(1).ToString(),
Balance=myDataReader.GetValue(2.ToString)()
});
}
con.Close();//关闭连接
foreach(列表\电子邮件中的客户信息)
{
MailMessage mail=新的MailMessage();
mail.To.Add(customer.Email);
mail.Subject=“欢迎来到C#”;
mail.From=新邮件地址(“”);
mail.Body=“Test”;
//将customer对象中的值添加到mail=>fe:mail.Body.Replace(“$$name$$”,customer.name);
SmtpClient smtp=新SmtpClient(“smtp服务器”);