отправить письмо нескольким получателям - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь отправить электронное письмо на несколько адресов электронной почты в моей базе данных. Вот мой текущий код. Это работает только тогда, когда я указываю один адрес электронной почты, однако мне нужно, чтобы они запрашивали мою базу данных и отправляли электронную почту на каждый адрес электронной почты. Куда я здесь не так?

    $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 ]

1 голос
/ 21 марта 2012

Ну, здесь много абстракций, о которых мы ничего не знаем из вашего кода.Что нужно проверить:

  • Вы уверены, что ваш запрос к базе данных возвращает все результаты, которые вы ищете (правильно ли заполнен $ 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);
?>
1 голос
/ 21 марта 2012

Что делает l_mail ()? Если это веб-служба, то она может иметь ограничение для массовой электронной почты.

...