邮件群发 想用C#做一个邮件群发,收件人邮箱从数据库中获取。发送时,从数据库中提取一个邮箱发送一封邮件...要怎么做呢?求各位大虾! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然你说了是提取一个邮箱发一个,那就用个while循环读取邮箱,当当前邮箱存在就发送,直到全部读取停止! 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()) { //发送邮件 } } 把要发的邮箱全部select出来,后台转成datatable,一行一行遍历数据行获得邮箱,然后调用发送邮件的方法发送邮件 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字段替代! C#中如何实现格式化输出?(新手初学,请指点,问题可能很小白) WPF tabcontrol控件SelectionChanged事件问题 BindingNavigator的显示绑定数据问题 为几十个cbo控件提供显示和修改数据操作该怎么做 怎样用数组来存放appSettings里边多个key的value呢? 关于数据库链接打开问题,求救 怎么定义嵌套属性,请各位高手指教(100分) 为什么C#中泛型类的Add()方法需要自己实现,而类中的属性带有Add()方法 关于Collection的实现问题 谁要下载......请进 c#的一个简单问题,求指导 请问下VS2008中单步调试的问题!
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())
{
//发送邮件
}
}
{
//发送
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字段替代!