如何发送电子邮件到多个电子邮件地址?

时间:2012-04-27 03:25:08

标签: php 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 "";

3 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分:1)

您需要使用MySQL的GROUP_CONCAT将逗号分隔的电子邮件加入。通过在“到”字段中填充以逗号分隔的值,它将自动发送给多个收件人:

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

Group Concat MySQL:

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

PHP文档解释mail()函数中的多个电子邮件收件人:

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

答案 2 :(得分: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教程。这是基本的东西。

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