select B.* , A.MailAddress     FROM B JOIN A ON B.Department  = A.Department  

解决方案 »

  1.   


    SqlConnection conn = new SqlConnection("连库字串");
    string sql = "select A.MailAddress,B.* from A,B where A.Department=B.Department";
    SqlDataAdapter adp = new SqlDataAdapter(sql,conn);
    DataSet ds = new DataSet();
    adp.Fill(ds);
    if(ds.Tables[0].Rows.Count > 0)
    {
      foreach(DataRow dr in ds.Tables[0].Rows)
      {
        //string to = dr["MailAddress"].ToString();
        //body = .....;
      }
    }
      

  2.   

    我还是贴出代码,请各位指点。谢谢了。
     try
                {
                    MailMessage mailMsg = new MailMessage();
                    SqlCommand cmd = new SqlCommand("select * from A", Cn);
                    SqlDataReader dr = cmd.ExecuteReader();
                    ////问题就在下面
                    while (dr.Read())
                    {
                        mailMsg.To.Add(dr["MailAddress"].ToString());//循环加入邮件地址。                    //按不同部门先生成一个信息表格我是这样做的:                    switch (dr["department"].ToString())
                        {
                            case "A":
                                //用A作为参数传到select * from B where department='A',在SqlDataReader读取,最后用 StringBuilder生成一个A部门详细信息的表格                            mailMsg.Body = "";//StringBuilder生成一个A部门详细信息的表格
                                break;
                            case "B":
                               .........
                        }
                        ///问题出来了,我的方法结果是:所有地址都被发送了一个A部门的详细信息。
                        ///我期望的是:[email protected]收到的是A部门的详细信息,[email protected]收到的是B部门的详细信息。
                    }
                    mailMsg.From = new MailAddress("[email protected]");
                    mailMsg.Subject = "自动发送的邮件";
                    mailMsg.SubjectEncoding = System.Text.Encoding.GetEncoding("GB2312");
                    mailMsg.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");
                    mailMsg.IsBodyHtml = true;
                    SmtpClient mailServer = new SmtpClient();
                    mailServer.Host = "192.168.1.2";
                    mailServer.Send(mailMsg);
                    Response.Write("发送成功");
                }
                catch (Exception err)
                {
                    Response.Write(err);
                }
      

  3.   

    收信人有2个 但你发送过程只有一次啊! 你的逻辑好像不对吧! 要把 mailServer.Send(mailMsg); 
    放到 while里面去吧!你可以一步一步调试啊 看看你的执行顺序
      

  4.   

    楼上兄弟。按你说的这段我改了一下确实是可以分开发送了。
    但是发送到B的邮件又同时也发送一份给了A。
    while (dr.Read()) 

    mailMsg.To.Add(dr["MailAddress"].ToString());//循环加入邮件地址。                  
     switch (dr["department"].ToString()) 
     { 
     case "A": 
      mailMsg.Body = "";//StringBuilder生成一个A部门详细信息的表格 
      mailServer.Send(mailMsg); 
      break; 
     case "B": 
       ......... 
      mailServer.Send(mailMsg); 
      } 
    改为if语句也是一样的。要如何才能发送给B的不发送送给A呢
      

  5.   

        protected void btn_click(object sender, EventArgs e)
        {
            string sql = "";        string myconn = ConfigurationManager.ConnectionStrings["myconn"].ConnectionString;
            SqlConnection conn = new SqlConnection(myconn);
            conn.Open();        string sqlstr = "select distinct Department from B";
            SqlCommand comm = new SqlCommand(sqlstr, conn);
            SqlDataReader read = comm.ExecuteReader();
            while (read.Read())
            {
                switch (read["Department"].ToString())
                {
                    case "A":
                        {
                            sql = "select MailAddress from A where Department='A'";
                        }
                        break;
                    case "B":
                        {
                            sql = "select MailAddress from A where Department='B'";
                        }
                        break;
                }
                sendmail(sql);
            }
            read.Close();
        }    protected void sendmail(string sql)
        {
            string myconn = ConfigurationManager.ConnectionStrings["myconn"].ConnectionString;
            SqlConnection conn = new SqlConnection(myconn);
            conn.Open();        SqlCommand com = new SqlCommand(sql, conn);
            SqlDataReader rd = com.ExecuteReader();
            if (rd.Read())
            {
                string add = rd["MailAddress"].ToString();
                MailAddress from = new MailAddress("[email protected]");
                MailAddress to = new MailAddress(add);
                MailMessage msg = new MailMessage(from, to);
                msg.Subject = "自动发送的邮件";
                msg.SubjectEncoding = Encoding.GetEncoding("GB2312");
                msg.IsBodyHtml = true;
                msg.Body = "";//StringBuilder生成一个A部门详细信息的表格
                msg.BodyEncoding = Encoding.GetEncoding("GB2312");
                SmtpClient Client = new SmtpClient("邮件服务器名");
                Client.Send(msg);
                Response.Write("发送成功");
            }
            rd.Close();
        }