利用Times定时发送邮件

shinevi 2008-07-03 11:52:38
目前格式

using System.Web.Mail;
using System.Timers;

public partial class Send : System.Web.UI.Page
{
System.Timers.Timer tim = new System.Timers.Timer(180000);//时间间隔

protected void Page_Load(object sender, EventArgs e)
{
tim.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
tim.AutoReset = true;
tim.Enabled = true;
}

private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//当前时间

//查找数据库,在当前时间到当前时间+间隔时间内是否有邮件要发送

//有邮件要发送
copyFile(list,subject,to,cc,body);//复制文件
tim.Enabled = false;
}

private void copyFile(ArrayList info, string subject, string to, string cc, string body)
{
//复制完后写入资料
getConnStr(section, desFile);//写入资料
//写完发送邮件
sendEmail(subject, to, cc, body, list);//发送邮件
}

private void getConnStr(string section, string desFile)
{
//写入资料
}

private void sendEmail(string subject, string to, string cc, string body, ArrayList desFile)
{
//发送邮件
}
}

为什么Timer_Elapsed内的执行不了?如果直接sendmail是可以的,但是加上条件好像就不执行了...有谁做过类似的,帮我看下,谢谢~
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinevi 2008-07-04
  • 打赏
  • 举报
回复
是取路径的问题,相对路径读不出来,绝对路径就没有问题了,谢谢~
shinevi 2008-07-03
  • 打赏
  • 举报
回复
期待.期待..期待...
jzywh 2008-07-03
  • 打赏
  • 举报
回复
tim 的生命周期在叶面执行时间内, 当然无法起作用, 你需要在gloabal.asax中开一个线程来做。
江城老温 2008-07-03
  • 打赏
  • 举报
回复
你把tim.AutoReset = true;
和tim.Enabled = false;
屏蔽掉,试试效果
shinevi 2008-07-03
  • 打赏
  • 举报
回复
to dugupiaoyun
如果,直接发送邮件的话,是可以的

using System.Web.Mail;
using System.Timers;

public partial class Send : System.Web.UI.Page
{
System.Timers.Timer tim = new System.Timers.Timer(180000);//时间间隔

protected void Page_Load(object sender, EventArgs e)
{
tim.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
tim.AutoReset = true;
tim.Enabled = true;
}

private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
sendmail();
//tim.Enabled = false;
}

private void sendmail()
{
//发送邮件
}

但是我需要的是,链接数据库,查找此时是否有邮件需发送,如果有则拷贝模板,写入数据,然后再发送邮件
这个时候就没有效果了...
dugupiaoyun 2008-07-03
  • 打赏
  • 举报
回复
把你的代码放到Global.asax文件中,然后稍做修改:

void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer myTimer = new System.Timers.Timer(180000);
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
myTimer.Interval = 180000;
myTimer.Enabled = true;
}

private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
//这里执行你的邮件检查和发送操作
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧