Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 每隔一段时间发送PHP邮件_Email_Php - Fatal编程技术网

Email 每隔一段时间发送PHP邮件

Email 每隔一段时间发送PHP邮件,email,php,Email,Php,我正在为我的高中学生会开发一个简单的短信服务,我的托管服务每分钟只允许发送19封PHP邮件,所以有没有办法设置一个间隔,只发送15封邮件,等等,再发送15封,等等,直到所有邮件都发送完?下面是我的一些代码,您可能只需要看到“foreach”部分 $subject = ""; $message = "Hey, $first! $messageget"; $header = 'From: Student Council<email@email.net>' .

我正在为我的高中学生会开发一个简单的短信服务,我的托管服务每分钟只允许发送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); 



} 
$subject=”“;
$message=“嘿,$first!$messageget”;
$header='发件人:学生会'。“\r\n”。
答复:email@email.net' . “\r\n”。
“X-Mailer:PHP/”。phpversion();
foreach($to as$value){
$result=mail($value、$subject、$message、$header);
} 

您只需使用以下功能:

 sleep(60);
把它放在你的循环中

编辑:

对于电子邮件计数,只需将循环中发送的电子邮件相加:

$i=0;  // about the foreach loop
在循环调用内部

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

sleep(60);

if($i您可以使用
sleep()
功能:

 sleep(60); // wait during 60 seconds

在这种情况下,您可以使用cron作业。

可以使用模数$i%15(每15次运行一次)进行计数,然后使用睡眠暂停(60)

(上述答案假设您的数组_键是数字的,按照顺序,您也可以使用:)


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

因此,如果你有一个循环可以一个接一个地发送所有邮件,那么你可以在每次邮件发送后执行
sleep(4)
来降低速度

foreach($to as $value) { 
    $result = mail($value, $subject, $message, $header); 
    sleep(4);
} 
这比计算何时发送下一批15封邮件,然后再等待60秒要容易得多。:)


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

直接发送到SMTP的限制是否相同?对于SMTP,它是9封电子邮件/分钟。如果这就是你要问的?我不熟悉cronjobs,但要了解更多信息,每次信息都会有所不同,学生会主席会登录到我的网站,键入一条信息,然后发送。你能否将收件人添加为密件抄送,那么你就可以在同一批中发送给更多的收件人?不过,它有一些回退(更容易被垃圾邮件过滤器等捕获),但可能会在这种情况下使用?是在几秒钟内吗?不是几毫秒?谢谢你的反馈!我不需要数一数吗?我该怎么做呢?这很重要。它运行第一个foreach,然后根据该示例暂停60秒,然后继续,直到下一个。如果需要计数器,请在循环$i=0外定义一个变量;循环内部调用$i++在每次迭代中递增。问题是:如何每60秒发送15封邮件。。。这在你的回答中没有解决。我只是把它放在你上面的评论中。太棒了!不知道为什么在人们建议使用睡眠后我没有想到这一点();非常感谢你!感谢您的反馈!这正好回答了我的问题,但斯文提出了一个更简单的方法。但还是投票支持你!
foreach($to as $i=>$value) { 
    if($i%15==1) sleep(60);
    $result = mail($value, $subject, $message, $header);
} 
$i=0;
foreach($to as $value) { 
    if($i%15==1) sleep(60);
    $result = mail($value, $subject, $message, $header);
    $i++;
} 
foreach($to as $value) { 
    $result = mail($value, $subject, $message, $header); 
    sleep(4);
}