2011-08-09 5 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 { 

} ?> 

は素晴らしい作品ができますが、配列内のいくつかのメールを送信しようとすると、それは動作しません。リスト全体を

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:あなたはあなたのリストに電子メールの皆を送信したい場合は

+2

掲載コード基本的に述べています。毎回2つの変数を上書きし、1つの電子メールを送信します。 to値には最後の反復があります。 –

+0

エラー?何が起こるの? – mcgrailm

+0

1つのディビジョンが配列内にある場合、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

、これを試してみてください? TOではなくBCCで電子メールを送信するための新しい機能を作成します。すべてのあなたのアドレスのコンマ/セミコロン値の文字列を入力します。ループの使用.=オペレータの文字列を連結するため

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

Iは、上記各電子メールアドレスの末尾にセパレータとしてセミコロンが挙げました。

+0

これは動作しますが、アレイ内の最初のユーザーにのみ電子メールを送ります – Codded

関連する問題