向多个收件人发送电子邮件

时间:2012-03-21 10:55:31

标签: php phpmailer

我正在尝试向我的数据库中的多个电子邮件地址发送电子邮件。这是我目前的代码。它仅在我指定单个电子邮件地址时才起作用,但是,我需要让他们查询我的数据库并将电子邮件发送到每个电子邮件地址。我在哪里错了?

    $elist = $database->getRows("SELECT * FROM `emails`");

    if ($elist) {
        foreach ($elist as $elist_result) {
            $frm = 'rdsyh@gmail.com';
            $sub = 'Weekly Work Report';
            ob_start(); // start output buffering
            include_once('mail_content.php');
            $mail_body = ob_get_contents(); // get the contents from the buffer
            ob_end_clean();
            $to = $elist_result['email'];
            $mailstatus = l_mail('', '', $to, $elist_result['firstname'] . ' ' . $elist_result['lastname'], $frm, 'HR', $sub, $mail_body);

        }
    }


if ($mailstatus == 'ok') {
    echo '<center><font color=red style="font-size:14px">Message has been sent Succesfully.....!</font></center><br>';
} else {
    echo $mailstatus;
}

2 个答案:

答案 0 :(得分:1)

l_mail()做什么?如果它是一个Web服务,那么它可能会限制大量电子邮件。

答案 1 :(得分:1)

嗯,这里有很多抽象,我们对你的代码一无所知。要检查的事项:

  • 您确定您的数据库查询正在返回您正在寻找的所有结果(正确填充$ elist)?
  • 您确定查询是以您尝试访问它的格式返回数据(是否正确填充?)?
  • 您确定您的l_mail()函数正在运行(是否可能exit或者在第一次传递过程中终止脚本执行?)

根据我在此处看到的内容,如果其他所有内容都正常运行,您应该成功发送一堆电子邮件,其中一封发送给您列表中的每封电子邮件。

现在,如果您尝试发送一次发送到所有地址的电子邮件,那么您需要在for循环中对电子邮件地址进行分组,然后再运行您的邮件功能:

<?
$tos = array();
foreach ($elist as $elist_result) {
    $tos[] = $elist_result['email'];
}
$frm = 'rdsyh@gmail.com';
$sub = 'Weekly Work Report';
ob_start(); // start output buffering
include_once('mail_content.php');
$mail_body = ob_get_contents(); // get the contents from the buffer
ob_end_clean();
$to = implode(', ', $tos);
$mailstatus = l_mail('', '', $to, $elist_result['firstname'] . ' ' . $elist_result['lastname'], $frm, 'HR', $sub, $mail_body);
?>