使用php邮件功能添加发送每封电子邮件的延迟,同时向1000个用户发送邮件

时间:2013-02-04 09:30:33

标签: php

我想在使用phpmail()函数向用户发送每封电子邮件之间添加约30至60秒的延迟。我从表中获取用户的电子邮件数据并使用while循环,数据库表中有大约1000个用户。我希望延迟重复此while循环的语句,以便每个电子邮件在该特定用户之后发送给下一个用户。我使用以下代码:

$sql = "select * from users where `user_email` = '$_REQUEST[q]' or `user_name`='$_REQUEST[q]' ";

$rs_results = mysql_query($sql) or die(mysql_error());   

while ($rrows = mysql_fetch_array($rs_results)) {

$fullname = $rrows['full_name'];
$usermailid = $rrows['user_email'];
$username = $rrows['user_name'];

$message =
"Hello $fullname  \n
Welcome to My Site \n
The rest of the message";

mail($usermailid, "Important Message - from Site Admin", $message,
    "From: \"Mysite Admin\" <auto-reply@mysite.com>\r\n" .
     "X-Mailer: PHP/" . phpversion()); 
}

以上代码一次性将所有电子邮件一起发送到表中的1000个用户。我希望在发送每封电子邮件之间有30到60秒的延迟

2 个答案:

答案 0 :(得分:0)

看看:http://php.net/manual/en/function.sleep.php。 php sleep函数将脚本执行延迟x秒。

答案 1 :(得分:0)

你是否将睡眠功能放在循环中?

可能是这样,即使你是,mail()请求也只是在脚本完成运行之前被堆叠起来。但那是另一个问题:脚本运行的时间将是500到1000分钟 - 比服务器允许的最大值还要长。

但是,使用cron功能,您可以每分钟唤醒并发送一封电子邮件并终止。