作者c邮件群发系统代码解析

邮件群发系统  时间:2021-01-31  阅读:()

概要

子线程工作发送成功邮件做标记逐条提取数据气泡提示信息最小化到托盘实时进度条

代码us ing System;us ing System.Collections;us ing System.Collections.Generic;using System.ComponentModel;using System.Data;us ing System.Data.OleDb;us ing System.Threading;using System.Text;using System.Windows.Forms;us ing System.Net.Mail;us ing System.Net;us ing System.Text.RegularExpress ions;names pace M ailGroup Sends

{public partial class Form1 :Form

{public Form1()

{

Initialize Comp onent();

}private string subject=string.Empty;private string mailto=string.Empty;private string body=string.Empty;private int sucNum=0;private int TotalDate

{get

{if(this.txtDateCount.Text.Trim().Length>0)return Convert.ToInt32(this.txtDateCount.Text.Trim());return 4;

}set { this.txtDateCount.Text=value.ToString(); }

}private string ConnString

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

{get

{string pathFull=

Sys tem.Diagn ostics.Pro ces s.GetCurrentPro ces s().M ainModu le.FileName;string path=pathFull.Substring(0,pathFull.LastIndexOf(@"\"));return@"Provider=Micros oft.Jet.OLEDB.4.0;Data Source="+path+@"\mail.mdb";

}

}private bool mailSent=false; //邮件是否发送成功private int mailTotalCount=0;private int CategoryId=0;private int SentCount=0; //已发送数private int UnitConversion=1; //默认为秒

///<summary>

///发送间隔

///</summary>private int Interval

{get

{int timer=0;int totalMis=(TotalDate*UnitConvers ion* 1000);timer=to talM is / (mailTo talCount-S entCount);return timer;

}

}

///<summary>

///提取邮件

///</summary>private void InitMailList()

{

O leDbConnection Conn=new OleDbConnection(ConnString);try

{string strWhere=CategoryId==1000? "" : "and categoryid="+CategoryId+"orderby isSend,uyx";string sqlStr=@"select top 1 uyxfrom[usermail]where isDelete=0 and IsSend=0"+strWhere;if(Conn.State==ConnectionState.Clos ed)Conn.Open();

OleDb Command cmd=new OleDb Command(s qlStr,Conn);

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

OleDbDataReader reader=cmd.ExecuteReader();mailto=string.Empty;wh ile(re ad er.Re ad())

{mailto+=reader[0].To String()+",";

}reader.Clos e();if(reader!=null)reader.Dispos e();mailto=mailto.Trim(",".ToCharArray());

}catch(Exception ex)

{

Mess ageBox.Show(ex.Mess age,"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);

}fin a lly

{if(Conn.State==Connection State.Open)Conn.Clo se();if(Conn!=null)Conn.Disp ose();

}

}

///<summary>

///加载邮件列表

///</summary>private void LoadMailList()

{this.dataGridView 1.Co lumn s.Clear();if(this.dataGridView 1.Rows.Count>0)this.dataGridView 1.Rows.Cle ar();dataGridView1.RowHeadersWidth=21;

DataGridViewTextBo xColumn column=new DataGridViewTextBo xColumn();column.ReadOnly=true;column.HeaderText="邮箱列表";column.DisplayIndex=0;column.Name="邮箱列表";column.Width=120;dataGrid View1.Columns.Add(column);column=new DataGridViewTextBo xColumn();column.ReadOnly=true;column.HeaderText="状态";column.DisplayIndex=1;

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

dataGrid View1.Columns.Add(column);

O leDbConnection Conn=new OleDbConnection(ConnString);try

{string strWhere=CategoryId==1000?"" : "and categoryid="+CategoryId+"orderby isSend,uyx";string sql=@"select uyx,Is Send fromusermail where isDelete=0"+strWhere;if(Conn.State==ConnectionState.Clos ed)Conn.Open();

OleDbCommand cmd=new OleDbCommand(s ql,Conn);

OleDbDataReader reader=cmd.ExecuteReader();mai lTo talCo unt=0;wh ile(re ad er.Re ad())

{

DataGridViewRow dgvr=new DataGridViewRow();

DataGridViewTextBo xCell cell=new DataGridViewTextBo xCe ll();cell.Value=reader[0].To String();dgvr.Ce lls.A dd(c e ll);cell=new DataGridViewTextBo xCell();cell.Value="●";c ell.Style.ForeCo lor=Convert.To Int32(reader[1])==0?

Sys tem.Drawin g.Co lo r.Ye l lo w:Sy s t em.Drawin g.Co lo r.Gre en;dgvr.Ce lls.A dd(c e ll);dataGridView 1.Rows.Add(dgvr);ma ilT o t a lCo un t++;

}reader.Clos e();if(reader!=null)reader.Dispos e();this.lb lmai lCount.Text=" "+SentCount+"/"+mailTotalCount+" ";

}catch

{

}fin a lly

{if(Conn.State==Connection State.Open)Conn.Clo se();if(Conn!=null)Conn.Dispose();

}

}

///<summary>

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

///已发送邮件个数

///</summary>private void SentMailCount()

{

O leDbConnection Conn=new OleDbConnection(ConnString);try

{string strWhere=CategoryId==1000? "" : "and categoryid="+CategoryId;string sqlStr=@"select uyxfrom[usermail]where isDelete=0 and IsSend=1 "+strWhere;if(Conn.State==ConnectionState.Clos ed)Conn.Open();

OleDbDataAdapter adapter=new OleDbDataAdapter(sqlStr,Conn);

DataSet ds=new DataSet();a d ap te r.F ill(d s);

SentCount=ds.Tab les[0].Ro ws.Count;

}catch(Exception ex)

{

Mess ageBox.Show(ex.Mess age,"错误",MessageBoxButtons.OK,

MessageBoxIcon.Error);

}fin a lly

{if(Conn.State==Connection State.Open)Conn.Clo se();if(Conn!=null)Conn.Dispose();

}

}

///<summary>

///标记出错的邮箱

///</summary>

///<p aram name="mail"></p aram>private void MarkErrorMail(string mail)

{

O leDbConnection Conn=new OleDbConnection(ConnString);try

{string sql="update usermail set IsDelete=10 where uyx='"+mail+"' ";if(Conn.State==ConnectionState.Clos ed)Conn.Open();

OleDb Command cmd=new OleDbCommand(s ql,Conn);cmd.ExecuteNonQuery();

}catch

{ }

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

{if(Conn.State==Connection State.Open)Conn.Clo se();if(Conn!=null)Conn.Disp ose();

}

}

///<summary>

///修改已发送邮件状态

///</summary>

///<p aram name="mail"></p aram>private void UpdateMailState(string mail, int state)

{

O leDbConnection Conn=new OleDbConnection(ConnString);try

{string where=string.Empty;if(ma il.Length>0)

{

WriteToTxt(DateTime.Now+" Success "+mail, txtLogPath);if(ma il.In d e xO f(",")>-1)'")+"' ";where="and uyx='"+mail+"'";

}e ls e

{where="and IsSend=1";

}string category=CategoryId==1000? "" : "and categoryid="+CategoryId;string sql="update usermail set Is Send="+state+"where IsDelete=0"+category+wh e re;if(Conn.State==ConnectionState.Clos ed)Conn.Open();

OleDb Command cmd=new OleDbCommand(s ql,Conn);cmd.ExecuteNonQuery();

}catch

{ }fin a lly

{if(Conn.State==Connection State.Open)Conn.Clo se();if(Conn!=null)Conn.Disp ose();

}

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

}

///<summary>

///邮件发送

///</summary>

///<p aram n ame="mailTo"></p aram>

///<p aram name="subject"></p aram>

///<p aram name="body"></param>

///<re tu rns></re tu rns>private bool Send(string mailTo, string subject,string body)

{try

{if(!Is Ema il(mailTo))

{

WriteToTxt(DateTime.Now+" Faild "+mailTo, txtLogPath+"Error Message:邮箱格式不正确");

M arkErro rM ail(mai lT o);return fals e;

}if(ma ilTo.Substring(mailTo.Length- 1)=="." | |mai lTo.Substring(mailTo.Length- 1)==",")

{

WriteToTxt(DateTime.Now+" Faild "+mailTo, txtLogPath+"Error Message:邮箱格式不正确");

M arkErro rM ail(mai lT o);return fals e;

}

MailMessage msg=new MailMessage();ms g.From=new MailAddress("***@****","xiaoyaos r",Enco ding.UTF8);if(ma ilT o.In d e xO f(",")>-1)ms g.Bc c.Add(mailTo);e ls ems g.To.A dd(mailTo);msg.Subject=subject;ms g.Body=body;

ArrayList annexList=ReadTxt(txtAnnexPath);for(int i=0; i<annexList.Count; i++)

{msg.Attachments.Add(new Attachment(annexList[i].ToString()));

}

S mtpClient s mtp=new SmtpClient("mail.163.com");

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

s mtp.Credentials=new NetworkCredential("***@****", "*******");smtp.Send(msg);mailSent=true;sucNum++;

}catch(Exception ex)

{if(ex.Mess age.IndexOf("http://www.ipmotor.com/smtp_err.htm")>-1)

{

WriteToTxt(DateTime.Now+" Faild Error Message:"+ex.Message,txtLogPath);this.notifyIcon 1.ShowBallo onTip(Interval, "",ex.Me ssage,Too lTip Icon.None);

System.Threading.Thread.Sleep(Interval*2);base.Dispose(true);

App lication.ExitThread();

Ki llTh re a d();

}

WriteToTxt(DateTime.Now+" Faild "+mailTo+" Error Message:"+ex.Message, txtLogPath);

M ark Erro rM a il(ma ilT o);mailSent=false;

}return mailSent;

}

//*******************************************************************//

//开始发送public void StartMailSend()

{

MailSend mailSend=new MailSend();ma i lS e n d.iT ot a lCount=ma ilT o t a lCo unt;ma i lS e n d.int e rva l=In t e rva l;mailSend.iSentCount=SentCount;mai lSend.onM ailSendProgres s+=new

M ailS end.dM ailS endProgres s(mailS en d_o nM ailS endProgres s);mailSend.Start();

}

//同步更新void mailSend_onMailSendProgress(int total, int current)

{try

作者逍遥散人 Blog:http://xiaoyaosrblog 51cto com

香港服务器促销:香港华为云混合服务器、高防服务器首月半价,普通110M大带宽服务器月付799,付5用6,付10用13

博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...

提速啦:美国多IP站群云服务器 8核8G 10M带宽 7IP 88元/月

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

bgpto:独立服务器夏季促销,日本机器6.5折、新加坡7.5折,20M带宽,低至$93/月

bgp.to对日本机房、新加坡机房的独立服务器在搞特价促销,日本独立服务器低至6.5折优惠,新加坡独立服务器低至7.5折优惠,所有优惠都是循环的,终身不涨价。服务器不限制流量,支持升级带宽,免费支持Linux和Windows server中文版(还包括Windows 10). 特色:自动部署,无需人工干预,用户可以在后台自己重装系统、重启、关机等操作!官方网站:https://www.bgp.to...

邮件群发系统为你推荐
金士顿4g内存条金士顿4g内存条价格是多少啊?燃气热水器和电热水器哪个好燃气热水器好还是电热水器好?手机浏览器哪个好手机上的浏览器哪个比较好?华为p40和mate30哪个好华为p40手机。跟荣耀30哪个好?少儿英语哪个好少儿英语哪个比较好?机械表和石英表哪个好买石英表还是机械表好啊电视直播软件哪个好电视直播软件哪个好电陶炉和电磁炉哪个好电磁炉和电陶炉买哪个?红茶和绿茶哪个好红茶和绿茶哪个好?51空间登录以前的51空间怎么进?
免费域名注册网站 美国独立服务器 googleapps permitrootlogin 双12活动 evssl证书 服务器cpu性能排行 阿里云代金券 免费静态空间 警告本网站 免费ftp站点 商务主机 坐公交投2700元 韩国名字大全 怎么测试下载速度 阿里校园 中国电信宽带测速网 shopex主机 新世界服务器 跟踪路由命令 更多