1

以下の行でエラーが発生します。

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);
        }
    }
}
4

2 に答える 2

1

変数 email を int として宣言します

int i = 0, email = 0;

次に、文字列を保存しようとします:

email = myDataReader.GetValue(0).ToString();

変数 email を文字列として宣言します。

string email = string.Empty;

i 変数は必要ありません。

int i = 0

i = i + 1 - 1; //increment or ++i 

取り外し可能

コメント後に編集: 顧客情報のクラスを作成します。あなたのフィールドがどのように呼ばれているかはわかりませんが、それらがcusNameandbalanceであると言うと、次のようになります。

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);

 }
}
于 2013-08-10T07:33:56.150 に答える
0

あなたのコードは

 while (myDataReader.Read())
    {

        list_emails.Add(myDataReader.GetValue(0).ToString());//add to array list            
    }
于 2013-08-10T07:39:28.280 に答える