概要
子线程工作发送成功邮件做标记逐条提取数据气泡提示信息最小化到托盘实时进度条
代码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
爱用云互联怎么样?爱用云是一家成立于2018年的老牌商家旗下的服务器销售品牌,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端...
目前云服务器市场竞争是相当的大的,比如我们在年中活动中看到各大服务商都找准这个噱头的活动发布各种活动,有的甚至就是平时的活动价格,只是换一个说法而已。可见这个行业确实竞争很大,当然我们也可以看到很多主机商几个月就消失,也有看到很多个人商家捣鼓几个品牌然后忽悠一圈跑路的。当然,个人建议在选择服务商的时候尽量选择老牌商家,这样性能更为稳定一些。近期可能会准备重新整理Vultr商家的一些信息和教程。以前...
最近很多网站都遭受到了伪墙/假墙攻击,导致网站流量大跌,间歇性打不开网站。这是一种新型的攻击方式,攻击者利用GWF规则漏洞,使用国内服务器绑定host的方式来触发GWF的自动过滤机制,造成GWF暂时性屏蔽你的网站和服务器IP(大概15分钟左右),使你的网站在国内无法打开,如果攻击请求不断,那么你的网站就会是一个一直无法正常访问的状态。常规解决办法:1,快速备案后使用国内服务器,2,使用国内免备案服...