ASP.net中每隔一定时间查询数据库表,并根据表里面的条件发送邮件要怎么实现啊?!
要求不影响其他人继续使用网页。

解决方案 »

  1.   

    用Timer控件可以,
    在Global.aspx中打开Timer即可。
      

  2.   

    要求是放在后台,不需要出现在网页上,就是放在Global.aspx.cs里面调用的!
    有没有人知道怎么样做啊?
    等着救命啊!
      

  3.   

    windows服务或者添加计划任务。
      

  4.   

    那些说用windows服务或者添加计划任务,就不要来了。肯定没有分数的!
      

  5.   

    <meta http-equiv="Refresh" content="秒数(5*60s); url=跳转的文件或地址(本页)"> 构造表里面的条件发送邮件
      

  6.   

    TO:blackhero(黑侠客)
     你说的是在页面里面隔段刷新!
     我要求的是放在后台,由Global.aspx.cs调用,也就是启动的时候调用该模块或者说是函数。
      

  7.   

    可以通过web service来实现,
    http://ttyp.cnblogs.com/archive/2005/03/18/121106.html
      

  8.   

    xmlhttp
    +
    settimeout
    技术
      

  9.   

    自己做个静态类,内部封装一个timer,公开一个用于激活timer的方法,在timer的elapsed事件做查询和发送邮件 。
    最后在global start的时候调一下那个启动timer的方法就行。
      

  10.   

    在sql server中定义一个job
    定时运行 下面的存储过程
    CREATE PROCEDURE sys_sendmail 
    @From varchar(100),--发件人
    @To varchar(100),--收件人
    @Bcc varchar(500),--抄送人
    @Subject varchar(400),--主题
    @Body varchar(4000),--内容
    @stmp_server nvarchar(4000),--发送邮件服务器
    @email_user nvarchar(4000),--发送邮件服务器登录用户名
    @email_pass nvarchar(4000) --发送邮件服务器登录用户密码
    as
    Declare @object int
    Declare @hr int
    EXEC @hr = sp_OACreate 'CDO.Message', @object OUT 
    EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2' 
    EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', @stmp_server
    --下面三条语句是smtp验证,如果服务器需要验证,则必须要这三句,你需要修改用户名和密码 
    EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value','1' 
    EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusername").Value',@email_user 
    EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value',@email_pass
    EXEC @hr = sp_OAMethod @object, 'Configuration.Fields.Update', null 
    EXEC @hr = sp_OASetProperty @object, 'To', @To 
    EXEC @hr = sp_OASetProperty @object, 'Bcc', @Bcc 
    EXEC @hr = sp_OASetProperty @object, 'From', @From 
    EXEC @hr = sp_OASetProperty @object, 'Subject', @Subject 
    EXEC @hr = sp_OASetProperty @object, 'TextBody', @Body 
    EXEC @hr = sp_OAMethod @object, 'Send', NULL 
    --判断出错 
    IF @hr <> 0 
    BEGIN 
    EXEC sp_OAGetErrorInfo @object 
    RETURN @object 
    END 
    PRINT 'success' 
    EXEC @hr = sp_OADestroy @object
    GO
      

  11.   

    我有个文章可以给楼主一点思路
    http://blog.8384.org/blogview.asp?logID=239
    希望你能用到
      

  12.   

    在SQL server里面建一个作业,定义运行某个(你写的查询)程序。
      

  13.   

    <meta http-equiv="Refresh" content="秒数(5*60s); url=跳转的文件或地址(本页)">
    这个比较实用吧~~~
      

  14.   

    用Timer开启一个后台的线程,准确来说是System.Threading.Timer,不要用错了另外两个Timer。或者制作一个Windows Service。
      

  15.   

    还是写个 windows service好
      

  16.   

    Timer控件  但是数量超过3时效率低不好控制。
    weh service由客户端每隔固定时间调用服务器上的方法
    ajax同样的思想每隔固定的时间发送请求
      

  17.   

    用AJAX,使用JavaScript的setTimeout函数
      

  18.   

    <meta http-equiv="Refresh" content="秒数(5*60s); url=跳转的文件或地址(本页)">
    这个比较实用吧~~~
    同意!您不想要页面传回后台?数据本在后台,那不简单?
      

  19.   

    简单啊!
    aspx.cs
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 查数据
                               //发邮件
    }aspx页里加这个:
    <script>
    <!-- 
    var limit="0:15"   //0:15 刷新时间15秒
    if (document.images)
    {
    var parselimit=limit.split(":")
    parselimit=parselimit[0]*60+parselimit[1]*1
    }

    function beginrefresh(){
    if (!document.images)
    return

    if (parselimit==1)
    window.location.reload()
    else

    parselimit-=1
    curmin=Math.floor(parselimit/60)
    cursec=parselimit%60

    if (curmin!=0)
    curtime=curmin+"分"+cursec+"秒后重刷本页!"
    else
    curtime=cursec+"秒后重刷本页!"
    window.status=curtime
    setTimeout("beginrefresh()",1000)
    }
    }
    window.onload=beginrefresh
    //-->
    </script>
      

  20.   

    这个不应该放到网页上去做吧,应该做成windows service吧,不过一定要实现的话,还是可以的,页面有timeout事件,调用就可以了
      

  21.   

    自己做个静态类,内部封装一个timer,公开一个用于激活timer的方法,在timer的elapsed事件做查询和发送邮件 。
    最后在global start的时候调一下那个启动timer的方法就行。
    例如:
    public void setTimer()
    {
    System.Timers.Timer atime = new System.Timers.Timer();
    atime.Interval = 1000*2;//隔多长时间激活事件
    atime.Enabled = true;
    atime.Elapsed += new ElapsedEventHandler(eventHandler);
    }
    protected void eventHandler(Object source, System.Timers.ElapsedEventArgs e)
    {
    //要做的事件
    }
    然后在global start的时候调一下setTimer就行了