Цикл while, postmarkapp, а цикл послал это странно?

Когда электронное письмо отправлялось, оно отправляло электронное письмо X раз для каждого человека, например:

Боб, Сьюзан, Джо, у всех были неактивные сайты.

Когда вещь зациклилась, она послала Бобу электронное письмо, но в электронном письме были письма всех трех людей.

Что я сделал не так?

Это потому, что я использовал $body .= а потом не сбрасывать его после отправки письма?

Вот мой код:

$query = mysql_query("SELECT * FROM `sites` WHERE `active` = '1' AND `banned` = '0'", $link);
while ($result = mysql_fetch_array($query)){


$time = time();
$adayago = $time - 86400;
$logQ = mysql_query("SELECT * FROM `logs` WHERE `site` = '" . $result['id'] . "' AND `type` = 'in' AND `time` > '" . $adayago . "'", $link);
$logR = mysql_fetch_array($logQ);
$logNR = mysql_num_rows($logQ);


if ($logNR > 1){
    // has sent a visit in the last 24 hours
    // do nothing
}else{
    // has not send a visit in the last 24 hours
    $userQ = mysql_query("SELECT * FROM `users` WHERE `id` = '" . $result['owner'] . "'", $link);
    $userR = mysql_fetch_array($userQ);
    mysql_query("UPDATE `sites` SET `active` = '0' WHERE `id` = '" . $result['id'] . "' LIMIT 1", $link);

    $subject = "[ALERT] Your MySite.com listing has been deactivated!";
    $body .= "Hi there,\n\n";
    $body .= "Your listing for " . $result['url'] . " has been deactivated.\n\n";
    $body .= "Your listing has been deactivated because you have not received any votes within the last 24 hours.\n\n";
    $body .= "You must add our button, our link or integrate our vote link into your site and get your members to vote on your topsite listing. Doing this will allow you to stay as an active listing and receive traffic from us.\n\n";
    $body .= "If you have forgotten how to send your members to your vote link, you can visit this page: http://www.mysite.com/vote-details/" . $result['id'] . ".html to learn how to do it.\n\n";
    $body .= "If at any time you need help, please just reply to this e-mail, we are available 12 hours a day, 7 days a week. We would be happy to assist you with setting your vote link up on your website.\n\n";
    $body .= "Kind regards,\nKyle R - MySite CEO\nhttp://www.mysite.com";

    $newPostmark = new Mail_Postmark();
    $newPostmark->addTo($userR['email'], "TGDb Member")
                ->subject($subject)
                ->messagePlain($body)
                ->send();
}

}

2 ответа

Решение

Да, измени это $body .= "Hi there,\n\n";

в

$body = "Hi there,\n\n";

Да вы правы. Просто сбросьте $body в начале цикла, вот так:

...
while ($result = mysql_fetch_array($query)){
  $body = '';
  ...

Это также избавит вас от ошибки E_NOTICE при добавлении $body в первый раз.

Другие вопросы по тегам