繁体   English   中英

PHP-jQuery-发送大量电子邮件-每5秒发送1封电子邮件

[英]PHP - jQuery - Sending mass emails - 1 email per 5 seconds

我正在使用PHP-jQuery简单脚本,它在每个PHP上都发送电子邮件。

这是我的代码:

<HTML>
<head>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<?php

require "./config.php";
ConnectWithMySQLDatabase();
$time = date('h:i:s');

$result = mysql_query("SELECT * FROM `emails`");
    while($row = mysql_fetch_array($result))
    {
    $email = addslashes($row['email']);
    ?>
    <script type="text/javascript">
        setTimeout(function() {
            $.post( "./Sender.php", { name: "<?PHP echo $email;?>", time: "<?PHP echo $time;?>" })
              .done(function( data ) {
                $( "#result" ).html( "Email sended to: " + data + "<br>");
              });
          }, 5000);
    </script>

    <?PHP 
    }
    ?>

<div id="result"></div>

我的代码的问题在于,它等待了5秒钟,然后像即时一样急于发送电子邮件。

  1. 如何使此脚本每5秒发送1封电子邮件,直到所有电子邮件发送完毕?
  2. 如何使此脚本在1行上显示1个结果,然后在波纹管下显示下一个结果,依此类推? 现在,脚本正在打印: Email sended to:仅一行,并且Email sended to:电子邮件但不增加行数。

提前致谢!

回答您的问题:

您的PHP代码会生成一个JavaScript脚本,其中包含对setTimeout函数的大量调用,但是所有这些调用都会接收到5000个参数,因此,自然而然地,所有电子邮件都会被立即发送。

我认为您可以通过将每个setTimeout增加5000来解决此问题,如下所示:

$result = mysql_query("SELECT * FROM `emails`");
    $wait = 0;
    while($row = mysql_fetch_array($result))
    {
    $email = addslashes($row['email']);
    $wait += 5000;
    ?>
    <script type="text/javascript">
    setTimeout(function() {
        $.post( "./Sender.php", { name: "<?PHP echo $email;?>", time: "<?PHP echo $time;?>" })
          .done(function( data ) {
            $( "#result" ).html( "Email sended to: " + data + "<br>");
          });
      }, <?php echo $wait; ?>); //printing 5000, 10000, 15000, etc...
</script>

<?PHP 
}
?>

第二个问题,您只需要使用jQuey.append函数:

而不是$("#result").html("Email sended to: " + data + "<br>");

使用$("#result").append("Email sended to: " + data + "<br>");


观察:

我知道这不是重点,但我认为需要注意的非常重要:您的代码似乎非常不安全,因为客户端脚本能够使您的服务器发送电子邮件,并且似乎没有采用身份验证方法,因为ajax请求只是发送电子邮件和一些“时间” ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM