0

メールアドレスを含むgridview列に基づいてメールを送信する方法を教えてください。現在、asp.netとc#を使用しています。現在、メールにSMTPGmailを使用しています。

現在、小切手をバウンスした顧客(email、name、accountNo)を含むgridview1がありましたが、ボタンをクリックすると、これらすべての顧客に標準の電子メールを送信したいと思います。どうすればいいのかわかりますか?彼らの電子メールはデータベースに保存され、gridviewに表示されます。

   private void SendEMail(MailMessage mail)
{
    SmtpClient client = new SmtpClient();
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.EnableSsl = true;
    client.Credentials = new System.Net.NetworkCredential("@gmail.com", "password");

    try
    {
        client.Send(mail);
    }
    catch (Exception ex)
    {
        Console.WriteLine("{0} Exception caught.", ex);
    }

ここに画像の説明を入力してください

4

2 に答える 2

0

電子メールアドレスを配列に保存してみてください。

次に、foreachを実行し、配列内にある電子メールを送信します。

例:

クラス:

    public SmtpClient client = new SmtpClient();
    public MailMessage msg = new MailMessage();
    public System.Net.NetworkCredential smtpCreds = new System.Net.NetworkCredential("mail", "password");

public void Send(string sendTo, string sendFrom, string subject, string body)
{
    try
    {
        //setup SMTP Host Here
        client.Host = "smtp.gmail.com";
        client.Port = 587;
        client.UseDefaultCredentials = false;
        client.Credentials = smtpCreds;
        client.EnableSsl = true;

        //convert string to MailAdress

        MailAddress to = new MailAddress(sendTo);
        MailAddress from = new MailAddress(sendFrom);

        //set up message settings

        msg.Subject = subject;
        msg.Body = body;
        msg.From = from;
        msg.To.Add(to);

        // Send E-mail

        client.Send(msg);

    }
    catch (Exception error)
    {
    }
}

電子メールの送信:(button_click)

//read the emails from the database and save them in an array.
//count how many are the emails, ex: int countEmails = SqlClass.Function("select emails from table").Rows.Count;

string[] emails = new string[countEmails];
foreach (string item in emails)
{
   //send e-mail
   callClass.Send(item, emailFrom, subject, body); //you can adapt the class
}
于 2012-07-25T17:20:26.843 に答える
0

最も簡単なのは、グリッドビューにバインドしたデータセットをループすることです。ただし、gridviewについて質問したので、gridviewの行をループする方法は次のとおりです。

button_clickにこれを書いてください

string email = "";
foreach (GridViewRow item in GridView1.Rows)
{
      //considering 1st column contains email address
      //if not, replace it with correct index
      email =  item.Cells[0].Text;
      //code to send email

}

更新2

sendEmail関数を使用するようにコードを更新する

public void button_click(object sender, EventArgs e)
{
    string email = "";
    foreach (GridViewRow item in GridView1.Rows)
    {

          //if not, replace it with correct index
          email =  item.Cells[4].Text;
          //code to send email
         //reciever email add
         MailAddress to = new MailAddress(email);
         //sender email address
         MailAddress from = new MailAddress("your@email");

        MailMessage msg = new MailMessage();
        //use reason shown in grid
        msg.Subject = item.Cells[3].Text;

        //you can similar extract FName, LName, Account number from grid
        // and use it in your message body
        //Keep your message body like 
        str email_msg = "Dear {0} {1}, Your cheque for account number {2} bounced because of    the reason {3}";
        msg = String.Format(email_msg , item.Cells[0].Text,item.Cells[1].Text,item.Cells[2].Text,item.Cells[3].Text);
        msg.Body = email_msg ;
        msg.From = from;
        msg.To.Add(to);

        SendEMail(msg);

    }
}
于 2012-07-25T17:21:36.427 に答える