0

我有这个代码:

<?php 
$result_array1 = array();
$sql1 = "SELECT * FROM  `test_thing`";
$result1 = mysql_query("$sql1") or die($sql1.mysql_error());
while($row1 = mysql_fetch_array($result1))
    {
       $result_array1[] = $row1['email'];
    }
$sentmail = mail($result_array1,$subject,$message,$header);
?>

我的问题是,如果我将邮件功能放在循环中,用户会收到许多电子邮件而不是一封,如果我将它放在循环之外,则不会发送任何电子邮件。我的目标是只向每个用户发送一封电子邮件,但该电子邮件应该包含许多混合电子邮件。我在其他论坛上读过它可以使用数组来完成。也许代码有错误。有什么建议么?

谢谢

4

5 回答 5

1

试试这个

<?php 
$result_array1 = array();
$sql1 = "SELECT * FROM  `test_thing`";
$result1 = mysql_query("$sql1") or die($sql1.mysql_error());
while($row1 = mysql_fetch_array($result1))
    {
       $result_array1[] = $row1['email'];
    }
$email = implode(",",$result_array1); // $email = "one@example.com,two@example.com,three@example.com"
$sentmail = mail($email,$subject,$message,$header);
?>

的第一个参数mail可以是单个电子邮件 ID 或以逗号分隔的电子邮件 ID。这意味着您只需使用一个函数调用就可以将电子邮件发送给多个用户。

于 2012-05-05T18:46:21.613 回答
0

只需使用以下 MySQL 查询:

SELECT DISTINCT email FROM  `test_thing`

它将仅返回表中唯一的电子邮件地址。这样您就可以mail()在循环中使用,而不必担心重复的电子邮件地址。

于 2012-05-05T18:46:01.703 回答
0

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

mail 接受收件人地址的字符串。你总是可以implode(',', $result_array1)

于 2012-05-05T18:47:46.560 回答
0

恕我直言,邮件功能中的 $to 参数仅支持一封电子邮件。如果您想发送到多封电子邮件,请更改您的 $headers 并设置密件抄送;示例代码:

$headers.="Bcc: "; 
while($count < $count_recip){ 
$headers.=$recip[$count].", "; 
$count ++; 
} 
于 2012-05-05T18:54:48.600 回答
0

这对我有用:

$result_array1 = array();
$sql1 = "SELECT DISTINCT * FROM  `test_thing` GROUP BY `user_id`";
$result1 = mysql_query("$sql1") or die($sql1.mysql_error());

while($row1 = mysql_fetch_array($result1))
{
    $result_array1[] = $row1['EmailAddress'];
}

$email = implode(",",$result_array1);

我一起修改了一些答案。

也不会有重复的电子邮件,至少对我来说没有。

于 2012-11-01T19:07:06.287 回答