-3

我有这个工作完美的表格,除了它不会向多个人发送电子邮件。它只发送给一个人。我该如何解决?我希望能够向每个人发送一封单独​​的电子邮件,他们的电子邮件地址位于收件人字段中,无论同一电子邮件是否发送给其他用户。

更新:我做了一个 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

在 PHP 中,你通常有一些看起来像的代码

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

你可以像这样设置多个电子邮件收件人

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

逗号和 .= 将允许多个电子邮件收件人。

对于两个以上,您将使用

    $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 回答
1

您需要使用 MySQLGROUP_CONCAT将电子邮件连接在一起,用逗号分隔。通过在“收件人”字段中填充逗号分隔值,它将自动发送给多个收件人:

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 回答
0

问题是您的查询:

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

您只收到一个电子邮件地址,因为您只选择一个电子邮件地址,来自 id 存储在 中的用户$id。要解决此问题,您必须选择所需的所有 ID。首先,您需要确保您有一个名为的变量,该变量$ids存储了一个逗号分隔的 id 列表。然后将您的查询更改为:

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

如果您的 id 是整数,则无需像在原始查询中那样引用它们。如果它们是字符串,请确保在逗号分隔的列表中引用它们。如果你不知道如何$ids像我描述的那样制作你的变量,那么你需要阅读一些 php 教程。这是基本的东西。

否则,您的脚本应该可以工作。但是正如有人在评论中指出的那样,您有很多带有空白字符串的多余代码,您可以删除其中的大部分。

于 2012-04-27T16:42:55.477 回答