我试图向127人发送邮件。我发现在一封邮件中,bcc-part中只能有99封电子邮件地址。
所以我想把电子邮件数组分成40组,例如
我有一系列电子邮件
$emailaddresses = array(
[0] => email1,
[1] => email2, ...
所以我循环遍历数组并列出它们:
foreach($emailaddresses as $email) {
$list .= $email.',';
}
然后我删除最后一个','并将它们添加到我的mail-object:
$mail->bcc = substr_replace($list ,"",-1);
如何循环遍历该数组,直到40个地址,发送带有该列表的邮件,然后从41-> 80开始继续循环......等等?
答案 0 :(得分:3)
首先;发送邮件最简单也可能最干净的方法是为每个邮件发送一个邮件,这意味着所有这些邮件都只能在to-field中拥有自己的地址。
foreach($arrayOfEmail as $email){
mail($email, $subject, $message);
}
如果你必须发送块,这是我最容易的:
$segments = array_chunk($arrayOfEmail, 40); // Split in chunks of 40 each
for each($segments as $segment){ // For each chunk:
$mailTo = implode($segment, ','); // Concatenate all to one recipient string
(...) // BCC to headers+++
mail($myEmail, $subject, $message); // Send mail
}
答案 1 :(得分:1)
我认为Dagon是对的,你真的应该在for循环中向每个人发送1而不使用BCC,但是这里有一个循环的shell来让你开始回答:
$count = 0;
foreach($emailaddresses as $email) {
$count++;
// Use the modulus to see if we are at a multiple of 40
// Add the address to the BCC however you choose.
if ($count % 40 == 0) {
// Send the email and start a new one.
}
}
答案 2 :(得分:0)
为什么不使用implode函数
$mail_list=implode(",",$emailaddresses)
it will give yor mail address as
email1,email2,email3............... , lastemail
答案 3 :(得分:0)
您可以像这样迭代列表,而不是使用array_chunk:
将阵列预播种作为测试:
$someArray = array();
for ($i = 0; $i <= 368; $i++) {
$someArray[$i] = $i;
}
您将使用的逻辑:
$interval = 40;
$segments = floor($i/$interval);
for($i = 0; $i <= $segments; $i++) {
$elements = join(", ", array_slice($someArray,($i*$interval),$interval));
// extra logic here; i.e. test/validate addresses
print $elements;
}