【问题标题】:PHP mail: Multiple recipients?PHP 邮件:多个收件人?
【发布时间】:2011-11-15 09:14:46
【问题描述】:

我有这个代码:

<?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);
?>

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

【问题讨论】:

    标签: php email


    【解决方案1】:

    用逗号分隔地址。

    $to=array();
    while($row = mysql_fetch_array($result)) {
        array_push($to, $row['address']);
    }
    
    ...
    
    mail(implode(',', $to), $submit, $message, $headers);
    

    【讨论】:

    • 你的第 3 行也可以写成 $to[] = $row['address'];字符少得多。 :)
    【解决方案2】:
    while($row = mysql_fetch_array($result))
    {
        $addresses[] = $row['address'];
    }
    $to = implode(", ", $addresses);
    

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

    【讨论】:

    • @mgraph 我不确定。不过,在 RFC 2822 中说“每行字符必须不超过 998 个字符,并且应该不超过 78 个字符,不包括 CRLF。”。 faqs.org/rfcs/rfc2822.html
    【解决方案3】:

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

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

    注意! :)

    【讨论】:

      【解决方案4】:

      你只需要使用GROUP_CONCAT返回由','分隔的结果

      $result = mysql_query("SELECT GROUP_CONCAT(address) FROM email");
      

      【讨论】:

        【解决方案5】:

        根据上面 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'
          );
        }
        

        【讨论】:

          猜你喜欢
          • 2011-03-18
          • 2016-02-08
          • 2018-05-30
          • 2014-02-06
          • 2012-12-23
          • 1970-01-01
          • 1970-01-01
          • 2012-02-19
          • 1970-01-01
          相关资源
          最近更新 更多