select B.* , A.MailAddress FROM B JOIN A ON B.Department = A.Department
解决方案 »
- 有经纬度坐标信息的文件 在google地图上怎么加载显示站点(GIS地图展现)
- 求助,有没有办法在一个页面上实现窗口页面的动态布局
- css怎么控制母板的内容页呀
- aspx页面,在后台代码使用System.Windows.Forms.MessageBox.Show 方法 弹出对话框,怎样让这个对话框在最前显示?
- 请教:怎样能实现可输入的下拉菜单?
- 用C#做一个相册
- 新手的安装问题
- ASP.NET-页面显示读取地址栏传来的值
- 如何对DATAGRID做统计/????
- Regularexpressionvalidator验证控件的validationexpression中,如何书写如1和1.00都通过的正则表达式?急!
- 关于日历控件
- 邮件问题:
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 = .....;
}
}
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);
}
放到 while里面去吧!你可以一步一步调试啊 看看你的执行顺序
但是发送到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呢
{
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();
}