问题如下:
1.多线程发邮件
我现在做的比较简单,就是直接创建一个线程
public void SendMail(MailTemplate template, object info){
this.template = template;
this.info = info; Thread thread = new Thread(new ThreadStart(SendMailThread));
thread.Start();
}
public void SendMailThread(){
//这里用到了this.template 和 this.info
}当发送一个邮件时候没问题,
如果连续调用2次,就出问题了,不知如何解决...2.定时发邮件
在第一次给客户发邮件后,如客户在48小时内未做任务响应,则再发送一封邮件,不知这个功能如何实现..各位帮忙看看,谢谢了...
1.多线程发邮件
我现在做的比较简单,就是直接创建一个线程
public void SendMail(MailTemplate template, object info){
this.template = template;
this.info = info; Thread thread = new Thread(new ThreadStart(SendMailThread));
thread.Start();
}
public void SendMailThread(){
//这里用到了this.template 和 this.info
}当发送一个邮件时候没问题,
如果连续调用2次,就出问题了,不知如何解决...2.定时发邮件
在第一次给客户发邮件后,如客户在48小时内未做任务响应,则再发送一封邮件,不知这个功能如何实现..各位帮忙看看,谢谢了...
解决方案 »
- RDLC 怎么使用资源文件
- FCKeditor 自动将空格转换成  问题
- Sesstion 过期的问题
- socket问题,高手请进
- 安装.net2005后需要安装sql2005吗?
- 客户端不能自动下载ActiveX控件并注册的问题,请指教!
- 高分求简单的电子地图解决方案!!!顶者有分!!(不够再加)
- 如何写个程序或者脚本把目标DB全部备份或者DTS到另一个目标?什么时候使用guid 来替代Identity?什么时候使用ToUniversalTime()
- 问个foreach的问题?
- help?
- 请教在座的各位!这样的功能怎么做呢?谢谢!!较急
- Excel导入到SQL Server时,科学记数法的问题,求教!急!!!
你可以构造一个参数类 把它们作为参数传进SendMailThread方法里面
用System.Threading.ParameterizedThreadStart
嗯,是每个线程都不一样,以前没用过ParameterizedThreadStart这个,我去试试,谢谢!
可以做成windows service; 或console application然后放在'计划任务'里,设定成每48小时运行一次。如果收件箱是你们自己的exchange server, 那比较好办,用exchange API来查看 exchange server 的收件地址,对比被记录的邮件地址的的发送时间。exchange server 2007版以前,有一套API方法来提供exchange server编程,2007则提供了一套web service 来对exchange 2007编程,或叫web method,
引用的'web reference'。 如果不是exchange则很麻烦,必须引用outlook的dll库,作为客户端来检测收件箱。客户端的意思是每一次运行这个程序都必须要登陆到这台电脑。因为outlook是以
个人账号为工作基础的,它不是server程序。如果硬把它当server程序来运行将会有很多很多麻烦,安全性问题,从未的见过的错误提示等等。一般类似的程序都是以exchange server为基础的,如果你的帐号是web mail (如hotmail, gmail等),必须先下载下来到你的outlook,然后以outlook的dll
来实现。不过,outlook 的dll当成server来编程,非常恐怖,小心加小心。
不知道是不是程序没写好.
改动如下:
新建了一个类,保存2个参数
public class MailParameter {
public MailTemplate template;
public object info;
}
public void SendMail(MailTemplate template, object info){
MailParameter para = new MailParameter();
para.template = template;
para.info = info; Thread thread = new Thread(new ParameterizedThreadStart(SendMailThread));
thread.Start(para);
}protected void SendMailThread(object para) { MailParameter mp = (MailParameter)para;
MailTemplate template = mp.template;
object info = mp.info;
......
}
这样写可以么??还有,如在线程里出现异常,系统会不会自动抛出??
public MailTemplate template;
public object info;
Thread thread;
}public void SendMail(MailTemplate template, object info){
MailParameter para = new MailParameter();
para.template = template;
para.info = info; thread = new Thread(new ParameterizedThreadStart(SendMailThread));
thread.Start(para);
}
....
....
如果不想跟线程揪缠,查阅一下BackgroundWorker控件。
在第一次给客户发邮件后,如客户在48小时内未做任务响应,则再发送一封邮件,不知这个功能如何实现.. 各位帮忙看看,谢谢了...
------------
数据库或者XML记录第一次发送邮件的时间data1 标志0
当data1+48小时后.你的打开邮箱(机器打开也行,去读发件人)
如果有.标志改为:1else
重发
你什么时候以哪种方式结束线程?
当你发送邮件时post到服务器,如果邮件发送后线程处于休眠状态,用户如何得到响应?
在利用window service (假如使用sql server或是oracle 可用裡面的scheuler 去寫 stored procedure)