一个简易邮件群发软件设计与实现

作者: 日期:2019-08-08
 /// summary 
 /// 提取邮件列表
 /// /summary 
 /// 918博天堂网址param name= mails /param 
 /// returns /returns 
 private list string parseemaillist
 list string list = new list string 
 var mc = regex.matches*@\w+*+ , regexoptions.ignorecase);
 foreach 
 list.add;
 return list;
 }

在日志框中输出内容,为了能在线程中调用,使用了 invoke 方式执行。

/// summary 
/// 日志输出支持线程中执行
/// /summary 
/// param name= message /param 
private void log
 invoke);
}

基本描述:给定邮箱列表,标题与内容,以线程方式执行发送,给出执行统计与状态。
具体实现:使用线程池,但一组做为一个任务,全部完成才接收下一个任务,通过完成数量与邮箱列表长度的比较来判断是否全部完成,信息通过日志输出的方式查看,形式上通过回调将日志信息传递给调用者。


为此,这里专门定义一个发送器,在应用中,定义一个实例来发起任务。尽管只定义一个实例,但这里并不需要定义为设计模式中的单例模式,事实上,它是可以多实例运行。具体代码说话!

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading;
namespace ______emailsender
 public class emailsender
 #region 运行时数据
 // 邮箱列表
 private list string _emaillist = new list string 
 // 完成数量
 private volatile int _overcount = 0;
 // 邮件标题
 private string _title;
 // 邮件内容
 private string _content;
 // 完成回调
 private action string _callback;
 #endregion
 /// summary 
 /// 是否全部完成
 /// /summary 
 /// returns /returns 
 public bool isover
 return _overcount == _emaillist.count;
 /// summary 
 /// 发起任务
 /// /summary 
 /// param name= emails /param 
 /// param name= title /param 
 /// param name= content /param 
 /// param name= callback /param 
 /// returns /returns 
 public bool send
 if )
 return false;
 _emaillist = emails;
 _overcount = 0;
 _title = title;
 _content = content;
 _callback = callback;
 start;
 return true;
 /// summary 
 /// 启动任务
 /// 
 /// 以线程池方式运行,每个邮箱不论成败完成数加1,并回调通知。
 /// /summary 
 private void start
 foreach 
 var _email = email;
 threadpool.queueuserworkitem;
 _overcount++;
 _callback);
首页
电话
短信
联系