想用C#做一个邮件群发,收件人邮箱从数据库中获取。发送时,从数据库中提取一个邮箱发送一封邮件...要怎么做呢?求各位大虾!

解决方案 »

  1.   

    既然你说了是提取一个邮箱发一个,那就用个while循环读取邮箱,当当前邮箱存在就发送,直到全部读取停止!
      

  2.   


            string strsql = "sever=.;uid=sa;pwd=sa;...";
            using (SqlConnection conn = new SqlConnection(strsql))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("select ...", conn);
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                { 
                //发送邮件
                }
            }
      

  3.   

    把要发的邮箱全部select出来,后台转成datatable,一行一行遍历数据行获得邮箱,然后调用发送邮件的方法发送邮件
      

  4.   

            private void button1_Click(object sender, EventArgs e)
            {
                //发送
                string eids = getEids();
                if (eids.Length <= 0)
                {
                    clsUtils.ShowPrompt("請先選擇人員!");
                    return;
                }
                if (dbg1.Rows.Count <= 0 && dbg2.Rows.Count <= 0)
                {
                    clsUtils.ShowPrompt("沒有需要發送的數據!");
                    return;
                }
                DataTable tb = m_dbSql.GetDataTable("SELECT TOP 1 * FROM base_mail ORDER BY id ASC");
                if (tb.Rows.Count <= 0)
                {
                    clsUtils.ShowPrompt("郵件服務器還未設置,請設置");
                    return;
                }
                SmtpClient client = new SmtpClient(""+tb.Rows[0]["svr"].ToString()+"", Convert.ToInt32(tb.Rows[0]["port"]));   //设置邮件协议            client.UseDefaultCredentials = false;//这一句得写前面
                client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器
                if (dbg1.Rows.Count > 0)
                {
                    for (int i = 0; i < dbg1.Rows.Count; i++)
                    {
                        string email = dbg1.Rows[i].Cells[colemail.Index].Value.ToString();
                        if (email.Length > 0 && IsValidEmail(email))
                        {
                            MailMessage mmsg = new MailMessage("" + tb.Rows[0]["sender"].ToString() + "", "" + email + ""); //发件人和收件人的邮箱地址
                            mmsg.Subject = "統計: 人事系統-您" + ayear + "年" + amonth + "月出缺勤統計";      //邮件主题
                            mmsg.SubjectEncoding = Encoding.UTF8;   //主题编码
                            mmsg.Body = getBody(dbg1.Rows[i].Cells[coleid.Index].Value.ToString(), (DataTable)dbg1.DataSource, (DataTable)dbg2.DataSource);         //邮件正文
                            mmsg.BodyEncoding = Encoding.UTF8;      //正文编码
                            mmsg.IsBodyHtml = true;    //设置为HTML格式           
                            mmsg.Priority = MailPriority.Normal;   //优先级
                            try
                            {
                                client.Send(mmsg);
                            }
                            catch (Exception ex)
                            {
                                clsUtils.ShowPrompt(ex.Message);
                                return;
                            }
                        }
                    }
                    clsUtils.ShowPrompt("郵件已發送成功!");
                }
            }//這個是手上做的一個人事系統,每月群發工資信息的功能,注意看這個循環,dbg1是datagridview控件,裏面包含一個字段 email,這裡你可以用查詢你的數據庫得出email字段替代!