while döngüsünde e-posta gönderme

2 Cevap php

I PHPMailer ile while döngüsü e-posta göndermek çalıştığınızda, bazen bunu sorunları var sizce, 2, bazen her alıcıya 3 aynı e-posta (rasgele gibi), burada benim kodu gönderir?

 $list = $_POST['list'];
    $items = rtrim($_POST['items'],",");
    $query = "SELECT * FROM `mail` WHERE `ID` IN ($items)";
    $result = mysql_query($query);
    $from = "donotreply@mysite.net";
    $fromname = "mysite";

    $mail = new PHPMailer(true); 

    $mail->IsSendmail(); 

    $mail->From       = $from;
    $mail->FromName   = $fromname;

    $mail->Subject  = "Your subscription was confirmed";

while ($row = mysql_fetch_array ($result))
{
    // HTML body
    $body .= "<p>Hi ". $row['name'] ." <br /><br />";
    $body .= "Your subscription request to " . $l_name ."'s list was confirmed.<br /><br />";
    $body .= "Thank You !<br /><br />";

    // Plain text body (for mail clients that cannot read HTML)
    $text_body  = "To view the message, please use an HTML compatible email viewer!";

    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($row['email']);


    $mail->Send();
    $mail->ClearAddresses();

}

"Mail-> () gönderin;" i koymak gerektiğini düşünüyorum while döngüsünün dışında ve bir diziden tüm e-postaları almak?

ya da bunu mysql sorgusu ile sorun olduğunu düşünüyorum?

Düzenleme: Ben veritabanı, veritabanı hakkında hiçbir sorun kontrol ama ben normalde ilk e-posta gönderir ancak ikinci bir dublicated $ vücut değişken gider (2 posta dizide vardır diyelim) olduğunu anladım, i dublicated $ vücut değişken gönderir demek.

Düzeltme: hey, i bitti, ben sadece eklendi $ body = ""; ve şimdi mükemmel çalışıyor! T

2 Cevap

Sadece sorgu üzerinde "SELECT DISTINCT" koymak ve artık veritabanı ile sorunları görürsünüz.

Ben veritabanında yinelenen veri olma olasılığı daha fazla düşünüyorum.

Ayrıca ben POST dizideki doğrulama eksikliği (veya hiç) endişeliyim.

Bu bakarak değer olabilir:

http://stackoverflow.com/questions/1610582/cleaning-post-variables/1610601#1610601

Güncelleme: Sadece sorguya DISTINCT kullanabilirsiniz ancak ben çiftleri ilk etapta oraya nasıl soru ve ayrı bir sorun olarak bakmak olacaktır.