发送电子邮件给多个收件人
问题描述:
我试图发送电子邮件到我的数据库中的多个电子邮件地址。这是我目前的代码。它只在指定单个电子邮件地址时才起作用,但是,我需要让他们查询我的数据库并将电子邮件发送到每个电子邮件地址。我在哪里错了?发送电子邮件给多个收件人
$elist = $database->getRows("SELECT * FROM `emails`");
if ($elist) {
foreach ($elist as $elist_result) {
$frm = '[email protected]';
$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;
}
答
好吧,这里有很多抽象,我们对你的代码一无所知。要检查的事项:
- 您确定您的数据库查询正在返回您正在查找的所有结果(正确填充$ elist)吗?
- 您是否确定查询以您试图访问它的格式返回数据(是否正确填充)?
- 您是否确定您的l_mail()函数正在运行(是否有可能在第一次传输过程中
exit
或以其他方式终止脚本执行)?
根据我在这里看到的,如果一切正常工作,您应该成功地发送一堆电子邮件,一个到您的列表中的每封电子邮件。
现在,如果不是你想发送发送给所有地址的单个电子邮件一次,那么你就需要组的电子邮件地址在for循环,然后再把运行邮件功能:
<?
$tos = array();
foreach ($elist as $elist_result) {
$tos[] = $elist_result['email'];
}
$frm = '[email protected]';
$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);
?>
问题可能与您的查询和循环?如果你在循环中echo $ elist_result ['email']',你会得到预期的电子邮件地址吗? – jmlnik 2012-03-21 10:59:20
yes.got所有预期的电子邮件ID,但邮件只发送到第一个电子邮件地址 – Natasha 2012-03-21 11:03:20
那么,没有代码l_mail(),没有办法告诉。 – jmlnik 2012-03-21 11:07:58