每隔一段时间发送PHP邮件

时间:2012-10-14 21:16:43

标签: email php

我正在为我的高中学生会工作一个简单的短信服务,而我的托管服务只允许每分钟发送19封PHP邮件,所以有没有办法设置一个间隔只发送15封电子邮件,等一下,发送另一个15,等待,直到发送所有邮件为止?下面是我的一些代码,你可能需要看到的只是“foreach”部分。

$subject =     ""; 
$message =     "Hey, $first! $messageget";

$header =     'From: Student Council<email@email.net>' . "\r\n" .
               'Reply-To: email@email.net' . "\r\n" . 
              'X-Mailer: PHP/' . phpversion(); 


foreach($to as $value) { 

    $result = mail($value, $subject, $message, $header); 



} 

5 个答案:

答案 0 :(得分:6)

在60秒内发送15个邮件相当于每4秒发送一封邮件。

因此,如果您有一个可以一个接一个地发送所有邮件的循环,那么在每封邮件发送后执行sleep(4)减速。

foreach($to as $value) { 
    $result = mail($value, $subject, $message, $header); 
    sleep(4);
} 

这比计算何时发送下一批15封邮件然后再等待60秒更容易。 :)

此外,它还可以平衡CPU和网络资源的使用,并且在60秒后不会达到峰值。

答案 1 :(得分:4)

答案 2 :(得分:1)

您只需使用以下功能:

 sleep(60);

把它放在你的循环中。

编辑:

对于电子邮件计数,只需在循环中添加已发送的电子邮件:

$i=0;  // about the foreach loop

并在循环调用内部

if($i<15){ $i++; continue; }
else{ $i=0; }

sleep(60);

希望清除它。

EDIT2:如果没有,请点击此处:

$subject =     ""; 
$message =     "Hey, $first! $messageget";

$header =     'From: Student Council<email@email.net>' . "\r\n" .
               'Reply-To: email@email.net' . "\r\n" . 
              'X-Mailer: PHP/' . phpversion(); 

$i=0;
foreach($to as $value) { 

    $result = mail($value, $subject, $message, $header); 

    if($i<15){ $i++; continue; }

  sleep(60);
} 

答案 3 :(得分:1)

您可以使用sleep()功能:

 sleep(60); // wait during 60 seconds

答案 4 :(得分:1)

foreach($to as $i=>$value) { 
    if($i%15==1) sleep(60);
    $result = mail($value, $subject, $message, $header);
} 

Count可以用模数$ i%15(每15次运行一次)完成,然后在睡眠时暂停(60);

(上面的答案假设你的array_keys是数字的,按顺序,你也可以使用:)

$i=0;
foreach($to as $value) { 
    if($i%15==1) sleep(60);
    $result = mail($value, $subject, $message, $header);
    $i++;
}