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

标签 php jquery email

我正在开发一个 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 sent 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 请求只是发送电子邮件和一些“时间”...

关于PHP - jQuery - 发送大量电子邮件 - 每 5 秒 1 封电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460398/

相关文章:

javascript - 适用于此格式图像的最佳 Panorama Jquery 插件

php - 在浏览器关闭时调用ajax,而不是更改url

node.js - 错误 : Invalid from email address - SendGrid

php - 通过 jquery 将 json 文件渲染/显示为 html

Php 从不同的类运行时扩展(扩展为变量?)

php - 使用 Zend Framework 2 将验证器分配给 Controller 中的表单

c# - MailKit 和同一邮件帐户上的多个客户端

php - 使用学说的 Symfony 4 工作人员无法正常工作 : SQLSTATE[HY000] [2002] Connection timed out

javascript - chart.js 固定条宽问题

java - 如何使用MimeBodyPart以相同的文件名保存不同的内容?