我有这段代码:
<?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);
?>
我的问题是,如果我将邮件功能放在循环中,用户会收到许多电子邮件而不是一封,如果我将其放在循环之外,则不会发送电子邮件。我的目标是只向每个用户发送一封电子邮件,但该电子邮件应包含许多混合电子邮件。我在其他论坛上读到可以使用数组完成。也许代码有错误。 有什么建议吗?
由于
答案 0 :(得分: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。这意味着您只需使用一个函数调用就可以将电子邮件发送给多个用户。
答案 1 :(得分:0)
只需使用以下MySQL查询:
SELECT DISTINCT email FROM `test_thing`
它将仅从表中返回唯一的电子邮件地址。这样你就可以在循环中使用mail()
而不用担心重复的电子邮件地址。
答案 2 :(得分:0)
根据php.net:http://php.net/manual/en/function.mail.php
mail接受to地址的字符串。你总是可以implode(',', $result_array1)
答案 3 :(得分:0)
恕我直言邮件功能中的参数只需一个电子邮件支持。如果你想发送到很多电子邮件,更改你的$标头并设置密件抄送; 示例代码:
$headers.="Bcc: ";
while($count < $count_recip){
$headers.=$recip[$count].", ";
$count ++;
}
答案 4 :(得分: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);
我一起修改了一些答案。
也没有重复的电子邮件,至少没有我。