2010-12-03 5 views
0

Lorsque l'e-mail envoyé, il a envoyé l'e-mail X fois à chaque personne, par exemple:tout en boucle, postmarkapp, tandis que la boucle l'a envoyé bizarre?

Bob, Susan, Joe, tous avaient des sites inactifs. Quand la chose a fait une boucle, Bob a envoyé un e-mail, mais dans l'e-mail, le corps était composé de 3 e-mails.

Qu'ai-je fait de mal?

Est-ce parce que j'ai utilisé $body .= et que je ne l'ai pas effacé après l'envoi de l'e-mail?

Voici mon code:

$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(); 
} 

}

+1

oui UNSET le corps de $ juste avant la fin de la boucle –

Répondre

1

Oui, changer cette $body .= "Hi there,\n\n";

à

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

Mon mauvais>. Latox

1

Oui, vous avez raison. Il suffit de remettre le corps $ au début de la boucle, comme ceci:

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

Cela vous permettra aussi de sauver d'une erreur de E_NOTICE lorsque $ corps est ajoutée à la première fois.