电子邮件使用数组从foreach


email using array from foreach

如有帮助,不胜感激。

$divisions = explode(",", $entry->dept);
foreach($divisions as $division) {
     $divs=get_record('induction_emails','id',$division);
$useremail = get_record('user', 'email', $divs->email);
    $to = get_record('user', 'id', $useremail->id);  }
if (email_to_user($to, $from, $subject, $body)){    
redirect('thanks.php'); die;
}  else {
} ?>

在给一个人发邮件时效果很好,但是当你试图给数组中的几个人发邮件时,它就不起作用了

这是因为您将电子邮件发送到循环之外,并且在循环的每次迭代中覆盖数据。

你可能想要做的事情:

<?php
$statuses = array();
$divisions = explode(",", $entry->dept);
foreach($divisions as $division) {
    $divs=get_record('induction_emails','id',$division);
    $useremail = get_record('user', 'email', $divs->email);
    $to = get_record('user', 'id', $useremail->id);
    $email_status = email_to_user($to, $from, $subject, $body);
    $statuses [] = array('email_to' => $to, 'success' => $email_status);
}
foreach($statuses as $status) {
   if(!$status['success']) {
     //something went wrong with this email, handle it
   }
}
redirect('thanks.php'); die;
?>

如果你想给列表中的每个人发邮件,试试这个:

foreach($divisions as $division) 
{
    $divs=get_record('induction_emails','id',$division);
    $useremail = get_record('user', 'email', $divs->email);
    $to = get_record('user', 'id', $useremail->id);  
    email_to_user($to, $from, $subject, $body);
}

也许你想让它更有效并密件整个列表?创建一个新的功能来发送带有密件抄送而不是收件人的电子邮件。提供一个逗号/分号值字符串的所有地址。

foreach($divisions as $division) 
{
    $divs=get_record('induction_emails','id',$division);
    $useremail = get_record('user', 'email', $divs->email);
    $bcc .= get_record('user', 'id', $useremail->id).";";       
}
send_email_bcc($bcc, $from, $subject, $body);

在循环中连接字符串使用.=操作符:

 $myVariable .= get_record('user', 'id', $useremail->id).";";     

我在上面的每个电子邮件地址的末尾都包含了一个分号作为分隔符。