本帖最后由 hqulyc 于 2010-05-11 11:53:04 编辑

解决方案 »

  1.   

    1. 如何让其一次性发送完3000封邮件?
    失败时,sleep一段时间
    可以让发送失败的,fwrite 到一个文本里。2. 如何发送一封邮件就在页面显示提示信息,使其看起来像是一封封的发送(队列式).
    能不能实现,有争议。。
      

  2.   

    自己的一点想法 具体还得靠楼主自己实现 希望对你有帮助ignore_user_abort(true);
    set_time_limit(0); //加上这句可以让程序一次性发送完
    function test(){
         echo date('h:i:s') . "<br>";//展示发送成功的界面显示
    }
    ob_end_clean();
    ob_start();//开始缓冲数据
    while(1){
        echo str_repeat(" ",1024);//ie有默认的1k buffer
        ob_flush();
        flush();
        test();//填写mail发送完成的条件 加if判断后 发送成功则执行 否则输出等待状态
        usleep(1000000);//这个地方演示用 放在系统里注释掉 
        //这个地方需要传个标志位用来判断是否全部发送完 成立则 break;
    }
      

  3.   

    hi, bing19870624,
    感谢指点。以下是我的具体代码,sendmail里面是调用mail直接发送,如此!
    大概有发送N封邮件后,网页提示无法访问,也就是无法发送完所有邮件。
            set_time_limit(0);
    $subject = $_POST['subject'];
    $message = $_POST['message'];
    $sql = "select uEmail from tb_user";
    $result = mysql_query($sql);
    $cnt = 0;
    while ($row = mysql_fetch_array($result))
    {
    if ($row['uEmail'] != ''){
    sendmail($row['uEmail'], $subject, $message);
    echo $row['uEmail'].' => ok<br>';
    $cnt++;
    }
    }
    echo "<br> $cnt 封会员邮件发送完毕。<br>";
      

  4.   


    hi, yangball:可能我没描述清楚,我的问题是无法全部发送完。发送失败没关系。
      

  5.   

    可以刷新页面分页分送啊!sm.php?limit=0
    sm.php?limit=100<?php
    $limit = intval($_GET["limit"]);$list = 0;
    for($i = $limit; $i < $limit + 100; $i ++){
    if($list >= 100){
    header("location:sm.php?limit=".($limit + 100));
    }
    ...................
    $list ++;
    }
    }
      

  6.   

    顶楼上的,赞同!我这里有个:CTB论坛会员批量发送邮件1.1
    http://blog.chinaunix.net/u/19061/showart_2182400.html批量发送方法,类似,楼上所说的。