2011-08-09 28 views
-1

任何幫助,將不勝感激。電子郵件使用數組從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 { 

} ?> 

電子郵件一個人的時候,偉大的作品,但是當你試圖寄電子郵件給幾個在數組中這是行不通的。

+2

張貼的代碼基本上說。每次覆蓋2個變量,然後發送一封電子郵件。價值將有最後一次迭代。 –

+0

錯誤?會發生什麼? – mcgrailm

+0

當一個部門在電子郵件數組中,當2個部門在數組中時,它不會發送電子郵件並執行代碼底部的其他任何內容 – Codded

回答

2

這是因爲您在循環之外發送電子郵件,並在循環的每次迭代中覆蓋數據。通過各部門環,並找到所有的地址:

什麼你可能正試圖做的事:

<?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; 

?> 
0

如果你想在你的名單發送電子郵件大家,試試這個:

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); 
} 

也許你想讓它高效,BCC整個列表?創建一個新的功能發送電子郵件與BCC,而不是TO。以逗號/分號的字符串提供給您的所有收件人。

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).";";  

我包括分號如在高於每個電子郵件地址的末端的隔板。

+0

這可以工作,但只能通過電子郵件發送數組中的第一個用戶 – Codded

相關問題