日期:2014-05-19  浏览次数:21134 次

一个邮件群发程序,如何实现发邮件,显示发送进度和一些交互
winform下,想做个邮件群发的程序,不知道怎样实现在发送邮件时,
          1.   弹出一个窗口,里面有一个progressbar显示发送进度;
          2.   还能够通过这个窗口上的一个button即时取消发送操作。
          本人不太懂线程,不知道怎么设置线程,需不需要做两个线程,一个让它发信,一个前台UI显示进度。。。发送邮件的方法名是SendMail。。。
          希望各位牛人能提供点思路,发邮件是用jmail组件的。。。

------解决方案--------------------
1.首先必须开启线程,进行工作,
循环你的数据
Thread td = new Thread(new ThreadStart(this.Process));
td.Start();
在线程内处理UI的显示,这是最简单的方法了,也可以使用异步委托,线程池
你可以使用Interlocked类中的方法,做线程数量的控制和同步调控,也可以使用其 它方法
2.使用Jmail的时候,线程不要开的太多,最好不要超过10个.
3.群发邮件的时候,如果你没有自己的邮件发送服务器,必须注意由于频率过快导致拒收的问题.
------解决方案--------------------
一个用户线程就够了。进度显示交给主界面处理,也就是主线程。

取消发送的事件里,把发送线程停掉就可以了吧。
------解决方案--------------------
1. 发送进度的进度可以用总数和已处理的邮件数来确定进度条应该显示的位置
2. button即时取消发送操作一个变量,如果为假,则发送邮件的代码跳出。
3. 可以做两个线程,一个让它发信,一个前台UI显示进度