-3

複数の人にメールを送信しないことを除いて、このフォームは完全に機能しています。1人にのみ送信します。これを修正するにはどうすればよいですか? 同じメールが他のユーザーに送信されたかどうかに関係なく、宛先フィールドにメールアドレスが記載された個別のメールを各個人に送信できるようにしたいと考えています。

更新: print $email; を実行しました。メールを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 "";
4

3 に答える 3

1

GROUP_CONCATコンマで区切られた電子メールを結合するには、MySQL を使用する必要があります。「宛先」フィールドにカンマ区切りの値を入力すると、複数の受信者に自動的に送信されます。

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

グループ連結 MySQL:

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

関数内の複数の電子メール受信者を説明する PHP Doc mail():

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

于 2012-04-27T03:51:49.307 に答える
1

PHPでは、通常、次のようなコードがあります

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

このように複数のメール受信者を設定できます

    $to  = 'one@example.com' . ', '; // note the comma
    $to .= 'two@example.com';

コンマと .= により、複数の電子メール受信者が許可されます。

2 つ以上の場合は、

    $to  = 'one@example.com' . ', ';
    $to .= 'two@example.com' . ', ';
    $to .= 'three@example.com';

これを自動的に行うには、配列の最後のエントリにひねりを加えた foreach を設定できます。

    foreach($email as $to) {
    $lastone = next($email)===FALSE;
    $to .= $email . ', ';       
    if(!$lastone){
    $to .= $email;
    }
于 2012-04-27T03:35:42.543 に答える
0

問題はあなたの質問です:

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

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

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

IDが整数の場合、元のクエリで行ったようにIDを引用する必要はありません。文字列の場合は、カンマ区切りのリストで引用符で囲んでください。私が説明したように変数を作成する方法がわからない場合は$ids、いくつかのphpチュートリアルを読む必要があります。それは基本的なものです。

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

于 2012-04-27T16:42:55.477 に答える