PHP邮件:多个收件人?

时间:2011-09-12 13:55:26

标签: php email

我有这段代码:

<?php
include("db.php");

$result = mysql_query("SELECT * FROM email");

while($row = mysql_fetch_array($result))
{
$to = $row['address'];
}
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "example@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
?>

在我的表格(“电子邮件”)中,我有多个地址。 (它们不是逗号分隔的。) 我如何将我的信息发送到所有这些地址?

5 个答案:

答案 0 :(得分:42)

while($row = mysql_fetch_array($result))
{
    $addresses[] = $row['address'];
}
$to = implode(", ", $addresses);

mail() manual page所指定,函数的“to”参数可以采用逗号分隔的地址列表。

答案 1 :(得分:8)

用逗号分隔地址。

$to=array();
while($row = mysql_fetch_array($result)) {
    array_push($to, $row['address']);
}

...

mail(implode(',', $to), $submit, $message, $headers);

答案 2 :(得分:0)

我刚刚测试了您展示的代码,在使用它们之前,人们需要知道使用这种方式(在&#39;到&#39;字段中的多个地址),该电子邮件中的每个人都可以看到所有目的地。

此外,如果您正在使用密件抄送,他们也会知道列表中的第一个人。

请注意! :)

答案 3 :(得分:0)

您只需使用GROUP_CONCAT即可返回','

分隔的结果
$result = mysql_query("SELECT GROUP_CONCAT(address) FROM email");

答案 4 :(得分:0)

根据上述Alex的回答,即使您使用的是密件抄送,收件人也将知道列表中的第一个人。一种解决方案是将单个副本逐个发送到每个地址。​​

$emails = ['a@example.com', 'b@example.com', 'c@example.com'];
foreach ($emails as $email){ // or $result as $row
  mail(
    $email, // or $row['address']
    'Same Subject',
    'Same Content',
    'From: same_sender@example.com',
    '-f same_sender@example.com'
  );
}