[英]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秒钟,然后像即时一样急于发送电子邮件。
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.