2012-04-27 13 views
-3

私は、複数の人に電子メールを送信しないという点を除いて、このフォームは完全に機能しています。それは一人に送るだけです。どのように私はこれを修正するのですか?同じメールが他のユーザーに送信されたかどうかにかかわらず、個々のメールに自分のメールアドレスを含む個々のメールを送信することができます。複数のメールアドレスにメールを送信するにはどうすればよいですか?

アップデート:印刷した$電子メールを出しました。私は1つだけの電子メールを選択した場合はそれを印刷し、その後、私は1以上の場合は何も印刷されません。つまり、1つ以上の電子メールを検出しないことを意味します。

 $sql = "SELECT email from 
    friend_email_ids WHERE my_id='$id'"; 
    $result = mysql_query($sql); 

    $query = mysql_query($sql) or die ("Error: ".mysql_error()); 

    if ($result == "") 
    { 
    echo ""; 
    } 
    echo ""; 


    $rows = mysql_num_rows($result); 
    $emails = array(); 

    if($rows == 0) 
    { 
    print(""); 

    } 
    elseif($rows > 0) 
    { 
    while($row = mysql_fetch_array($query)) 
    { 

    array_push($emails, $row['email']); 


    print(""); 
    } 

    } 

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$headers .= "From: $usermail\r\n"; 
$subject = "$full_name added"; 
$message = "<html><body>"; 
$message .= "Hello, <br><br>$full_name posted someth<br><br>"; 
$message .= "<a href=www.domain.com/signup.php?t=&sign=>Click here.</a><br><br>"; 
$message .= "</body></html>"; 
foreach ($emails as $email) { 
mail($email, "Subject: $subject", $message, $headers); 
    } 


    echo ""; 
+2

空白の文字列を印刷するにはどうすればよいですか? – Amber

+1

ちょっとアンバー。わからない。私はいつもそこにいました。私はPHPの一種です。 – AAA

+1

@micha CCは他の人のメールアドレスを表示したくないため動作しません。私はそれがそれらに送られたように見えるようにしたい。 Facebookの電子メール通知を考えてみましょう。 – AAA

答えて

1

PHPで、あなたは通常

mail($to, $subject, $msg, $mailheaders); 

ようになりますいくつかのコードを持っていて、とても

$to = '[email protected]' . ', '; // note the comma 
    $to .= '[email protected]'; 

コンマと。=許可するように複数の電子メール受信者を設定することができます複数の電子メール受信者。

つ以上について、あなたは配列の最後のエントリにひねりを加えたのforeachを設定することができ、

$to = '[email protected]' . ', '; 
    $to .= '[email protected]' . ', '; 
    $to .= '[email protected]'; 

は自動的にこれを行うために使用します

foreach($email as $to) { 
    $lastone = next($email)===FALSE; 
    $to .= $email . ', ';  
    if(!$lastone){ 
    $to .= $email; 
    } 
+0

ありがとうございました。しかし、私の場合、上記のように電子メールのIDがデータベースから引き出されているので、私はそこにいくつあるかを制御することができないため、これは私のためにはうまくいかないでしょう。 – AAA

+1

この 'implode("、 "、$ emails)'のような電子メールに簡単に参加できます。このメソッドを使うと他の人がメールアドレスを見ることができると思います。 – candyleung

+0

@candyはい。私は実際にそれを前に使用しましたが、あなたがそれが私の要求に合わないと言ったようにもう一度。ありがとう! – AAA

1

あなたのことが必要MySQLのGROUP_CONCATを使用して、電子メールをコンマで区切って一緒に参加させてください。

SELECT GROUP_CONCAT(DISINCT `email` SEPARATOR ',') from 
    friend_email_ids WHERE my_id='$id'" 
    GROUP BY `email; 

グループの連結方式のMySQL::mail()機能で複数の電子メール受信者を説明する

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

PHPドクそれは自動的に複数の受信者に送信されますフィールド「を」で、カンマ区切りの値を取り込むことにより、 :

http://php.net/manual/en/function.mail.php

+0

ありがとうございます。しかし、通知を受け取る人が1人しかいない場合でも、それは機能しますか? – AAA

+0

はい、ハングするカンマは、受信者への送信に影響しません。 – philwinkle

+0

返信いただきありがとうございます。私は実際にCONCATを統合しましたが、私には同じ問題が残っています。 – AAA

0

問題はあなたですクエリ:

$sql = "SELECT email FROM friend_email_ids WHERE my_id='$id'"; 

あなただけ$idに保存されたIDを持つユーザーから、 1つの電子メールアドレスを選択しているので、あなたが唯一の1つの電子メールアドレスを受信して​​います。これを修正するには、必要なすべてのIDを選択する必要があります。まず、IDのコンマ区切りリストを格納する変数$idsがあることを確認する必要があります。次に、クエリを次のように変更します。

$sql = "SELECT email FROM friend_email_ids WHERE my_id IN ($ids)"; 

IDが整数の場合は、元のクエリと同じように引用符を付ける必要はありません。それらが文字列の場合は、コンマ区切りリストで引用符を付けるようにしてください。上記のように変数を$idsにする方法がわからない場合は、いくつかのPHPチュートリアルを読む必要があります。それは基本的なものです。

それ以外の場合は、スクリプトが動作するはずです。しかし、コメントの中の誰かが指摘しているように、空の文字列を含む不必要なコードがたくさんあるので、そのほとんどを削除できます。

関連する問題