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