作者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

【IT狗】在线ping,在线tcping,路由追踪

IT狗为用户提供 在线ping、在线tcping、在线路由追踪、域名被墙检测、域名被污染检测 等实用工具。【工具地址】https://www.itdog.cn/【工具特色】1、目前同类网站中,在线ping 仅支持1次或少量次数的测试,无法客观的展现目标服务器一段时间的网络状况,IT狗Ping工具可持续的进行一段时间的ping测试,并生成更为直观的网络质量柱状图,让用户更容易掌握服务器在各地区、各线...

易探云:香港CN2云服务器低至18元/月起,183.60元/年

易探云怎么样?易探云最早是主攻香港云服务器的品牌商家,由于之前香港云服务器性价比高、稳定性不错获得了不少用户的支持。易探云推出大量香港云服务器,采用BGP、CN2线路,机房有香港九龙、香港新界、香港沙田、香港葵湾等,香港1核1G低至18元/月,183.60元/年,老站长建站推荐香港2核4G5M+10G数据盘仅799元/年,性价比超强,关键是延迟全球为50ms左右,适合国内境外外贸行业网站等,如果需...

阿里云香港 16核32G 20M 999元/月

阿里云香港配置图提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 阿里云香港 16核32G 20M 这款产品,单单说价格上就是十分的离谱原价8631元/月的现价只要 999元 而且还有个8折循环优惠。废话不多说直接进入正题。优惠时间 2021年8月20日-2021年9月20日 优惠码 wn789 8折优惠阿里云香港BGP专线 16核32G 10M带宽 优惠购买 399元购买链接阿里云...

邮件群发系统为你推荐
美团月付怎么关闭美团打车免密去付关掉了,怎么回复视频制作软件哪个好什么视频编辑软件比较适合小白的少儿英语哪个好少儿英语教材哪个好?少儿英语哪个好少儿英语哪个比较好?绝地求生加速器哪个好绝地求生哪个加速器好用一点,求推荐一个电陶炉和电磁炉哪个好电陶炉和电磁炉哪个好看书软件哪个好手机读书软件哪个好用?云盘哪个好网络云盘哪个好用qq空间登录不上为什么我登不进去QQ空间dns服务器什么意思DNS什么意思?
国外域名注册 网站空间商 apache虚拟主机 个人域名注册 电信服务器租赁 tightvnc 地址大全 网通代理服务器 免费全能空间 云全民 网站木马检测工具 如何用qq邮箱发邮件 服务器监测 dnspod 个人免费邮箱 日本代理ip ledlamp 深圳域名 小夜博客 贵州电信 更多