每次循环后添加邮件地址

时间:2014-01-08 13:11:13

标签: c# sql sqldatareader

目前,当我的程序读取特定表格并向8位用户发送电子邮件时,如果有8位用户,则应收到一封电子邮件。 它应该只为每个用户发送一封电子邮件。 每个用户不是8封电子邮件。 这是我的代码:

        comm.CommandText = "SELECT * FROM tblRent WHERE DateIn < " + ImorgenTicks + " AND Status = 'Out' AND Trainee IS NULL";

        SqlDataReader read = comm.ExecuteReader();
        if (read.HasRows)
        {
            while (read.Read())
            {
                string mail = read["Mail"].ToString();
                try
                {
                     message.To.Add(mail);
                    //email
                    smtp.Send(message);
                }
                catch
                {
                    MessageBox.Show("Text");
                } 

            } 
        } 

我在互联网上搜索并找到了一些解决方案但没有让他们工作。

1 个答案:

答案 0 :(得分:2)

似乎您在每次迭代时向同一MailMessage添加多个地址。您需要清除message.To集合或在每次迭代中创建新消息

while (read.Read())
{
    string mail = read["Mail"].ToString();
    try
    {
        message.To.Clear();
        message.To.Add(mail);

        //email    
        smtp.Send(message);
    }
    catch
    {
        MessageBox.Show("Text");
    } 
}