有一個頁面﹐點機按鈕后要發送mail,現在我用smtp可以發送﹐但是太慢﹗就是網頁很長時間不動.
     哪位高手知道如何讓發送郵件在后台執行?
        能不能在用戶關掉此頁后﹐郵件發送也不終止﹐直到發送完成。

解决方案 »

  1.   

    你可以专门写一个Job用于发送邮件。“用户在點機按鈕后要發送mail”,做的实际动作对于你而言只是在数据库中插入一条记录,或者用其他方式留下一个标记!
    你的发送邮件程序可以挂在后台跑!!
      

  2.   

    用Web页面执行客户端程序  
    但必需客户端打开IE选项中的安全属情中的对没有标记为安全的ActiveX控件进行初始化和执行脚本<script>
    function exec (command) {
        window.oldOnError = window.onerror;
        window._command = command;
        window.onerror = function (err) {
          if (err.indexOf('utomation') != -1) {
            alert('命令已经被用户禁止!'); 
            return true;
          }
          else return false;
        };
        var wsh = new ActiveXObject('WScript.Shell');
        if (wsh)
          wsh.Run(command);
        window.onerror = window.oldOnError;
      }
    </script>调用方式
    <a href="javascript:" onclick="exec('/game_tools/or/魔力使者更新.bat')">魔力使者</a>
    可以是网上邻居和本机的文件。
      

  3.   

    在客户端做可能不妥吧!!如果你用的是SQL Server,那就简单了,配置一个Job,调用exe或者dll定时进行Mail发送!!如果是其他数据库.....随便问一下,Oracle的Job能够调用exe或者dll吗??
      

  4.   

    job到底如何配置呢? 郵件的內容剛好是從SQL Server上取的﹐web的后台數據庫就是SQL Server!
      

  5.   

    打开Sql企业管理器-->连接到数据库-->右键单击库的根节点-->新建作业!
    That's it.
      

  6.   

    能不能添加一個函數放入Global.asax里面來完成這樣的要求呢?
      

  7.   

    你可以应用ASP.NET的Timer控件来完成.
    由于定时事件是全局性事件,所以,一般放在Application_Start内当系统启动即开始执行,或放在session_start事件里面针对每个用户进行操作.1.把要发送的邮件写到数据库中
    2.用以下代码,定时发送数据库中的邮件
    /// <summary>
    /// 系统开启事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Application_Start(Object sender, EventArgs e)
    {
      //创建一个新的Timer实例
        System.Timers.Timer sysTimer = new System.Timers.Timer();      
        //将sysTimer_Elapsed指定为计时器的 Elapsed 事件处理程序 
        sysTimer.Elapsed += new System.Timers.ElapsedEventHandler(sysTimer_Elapsed);
         //10分钟执行一次,此单位为毫秒
        sysTimer.Interval = 60*10*1000;
        sysTimer.AutoReset = true;
        sysTimer.Enabled = true;
    }
    /// <summary>
    /// 定时器事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void sysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
      //此处即可填写您需要执行的代码.
    //系统将根据设定的时间,周而复始地重复执行此代码
    }
      

  8.   

    hchxxzx(NET?摸到一点门槛)
    我已经把你说的这段话加到global.asax里面了
    但是这段代码是怎么执行的啊
    如果页面没有运行``她也会自动定时发送吗