Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla while problem
Forum PHP.pl > Forum > PHP
egonik
Witam

Mam pewien problem, a mianowicie chce wysyłać pocztę przez PHPmailer i o ile pojedynczy adres idzie to z pliku po pętli nic a nic
poniżej ta nieszczęsna pętla

  1. $tablica=file("baza.txt");
  2. $j=0;
  3. while ($j < 1000){
  4. $adresik=$tablica[$j];
  5. $mail->AddAddress($adresik);
  6. if($mail->Send())
  7. echo "E-mail do "$tablica[$j]" został wysłany <br>";
  8. else
  9. echo "E-mail do "$tablica[$j]" nie mógł zostać wysłany, przyczyna :".$mail->ErrorInfo."<br>";
  10.  
  11. $j++;
  12. }


O co może chodzić, wczytywanie pliku działa bez niczego, nie mam juz pojęcia co może być
szok
Dlaczego po tablicy file, leciesz pętla while()? a nie pętla foreach() ? Jest wygodniejsza.
lukaskolista
Jak oddzielasz adresy?
Majcon
do{
kod ten (jestem na telefonie więc nie będę przepisywać go ;p)
}while($j < 1000)

Może tak biggrin.gif
szok
  1. <?php
  2.  
  3. $tablica=file("baza.txt");
  4.  
  5. foreach ($tablica as $item) {
  6. $mail->AddAddress($item);
  7. if ($mail->send()) {
  8. echo 'Emaild do'.$item.' zostal wyslany ';
  9. } else {
  10. echo 'Email do '.$item.'nnie zostaly wyslany, blad to: '.$mail->ErrorInfo;
  11. }
  12. }

Zakładam że adresy e-mail w pliku są jeden pod drugim.
Kofel
Zauważ, że co skok pętli dodajesz nowy adres do tej samej instancji $mail.

PS. W ogóle co to za konstrukcja:
($j < 1000)
Jesteś pewien, że tych adresów ZAWSZE będzie 1000?

Przykład jak to powinno wyglądać:
  1. $tablica = file("baza.txt");
  2.  
  3. foreach( $tablica as $adresik )
  4. {
  5. $mail = new ... //Tutaj powinieneś sobie tworzyć nową instancję wiadomości.
  6. $mail->AddAddress( $adresik );
  7.  
  8. if( $mail->Send() )
  9. echo "E-mail do "$adresik" został wysłany <br>";
  10. else
  11. echo "E-mail do "$adresik" nie mógł zostać wysłany, przyczyna :".$mail->ErrorInfo."<br>";
  12. }


Albo:
  1. $tablica = file("baza.txt");
  2.  
  3. foreach( $tablica as $adresik )
  4. {
  5. $mail->AddAddress( $adresik );
  6. }
  7.  
  8. if( $mail->Send() )
  9. echo "E-mail został wysłany <br>";
  10. else
  11. echo "E-mail nie mógł zostać wysłany, przyczyna :".$mail->ErrorInfo."<br>";
szok
Cytat(Kofel @ 21.12.2012, 23:52:27 ) *
Zauważ, że co skok pętli dodajesz nowy adres do tej samej instancji $mail.

PS. W ogóle co to za konstrukcja:
($j < 1000)
Jesteś pewien, że tych adresów ZAWSZE będzie 1000?

Przykład jak to powinno wyglądać:
  1. $tablica = file("baza.txt");
  2.  
  3. foreach( $tablica as $adresik )
  4. {
  5. $mail = new ... //Tutaj powinieneś sobie tworzyć nową instancję wiadomości.
  6. $mail->AddAddress( $adresik );
  7.  
  8. if( $mail->Send() )
  9. echo "E-mail do "$adresik" został wysłany <br>";
  10. else
  11. echo "E-mail do "$adresik" nie mógł zostać wysłany, przyczyna :".$mail->ErrorInfo."<br>";
  12. }


Albo:
  1. $tablica = file("baza.txt");
  2.  
  3. foreach( $tablica as $adresik )
  4. {
  5. $mail->AddAddress( $adresik );
  6. }
  7.  
  8. if( $mail->Send() )
  9. echo "E-mail został wysłany <br>";
  10. else
  11. echo "E-mail nie mógł zostać wysłany, przyczyna :".$mail->ErrorInfo."<br>";


Nie koniecznie musi tworzyć nowy obiekt, zalezy z jakiego mailer krozysta, np w CI jak jest funkcja, to tworzysz jeden obiekt, i potem dodajesz adres, send i po kłopocie.
Tak za każdym razem.
Kofel
Cytat(szok @ 22.12.2012, 13:23:42 ) *
Nie koniecznie musi tworzyć nowy obiekt, zalezy z jakiego mailer krozysta, np w CI jak jest funkcja, to tworzysz jeden obiekt, i potem dodajesz adres, send i po kłopocie.
Tak za każdym razem.


"Dodajesz" czy "ustalasz"? smile.gif No właśnie ten problem, że nazwa metody "AddAddress" daje mi do myślenia, że wlaśnie jest "dodawanie". Więc co skok pętli mamy coraz więcej adresatów wink.gif

1. a
2. a,b
3. a,b,c
4. a,b,c,d

Nie wiem. Być może podana biblioteka PHPMailer jest tak głupia, że "AddAddress" ustala adres, a nie dodaje go do jakieś listy wink.gif
szok
Cytat(Kofel @ 22.12.2012, 13:57:32 ) *
"Dodajesz" czy "ustalasz"? smile.gif No właśnie ten problem, że nazwa metody "AddAddress" daje mi do myślenia, że wlaśnie jest "dodawanie". Więc co skok pętli mamy coraz więcej adresatów wink.gif

1. a
2. a,b
3. a,b,c
4. a,b,c,d

Nie wiem. Być może podana biblioteka PHPMailer jest tak głupia, że "AddAddress" ustala adres, a nie dodaje go do jakieś listy wink.gif


No może tak być smile.gif

Ale ... jest wywoływana metoda send(), czyli wysyła, i teraz pytanie brzmi czy po wykonaniu metody send() są czyszczone pola do wysyłki, czy by nie musiał uzyć jakieś metody typu $mal->clear(); czy coś, nie wiem jaka biblioteka została użyta.
Kofel
Cytat(szok @ 22.12.2012, 15:50:13 ) *
No może tak być smile.gif

Ale ... jest wywoływana metoda send(), czyli wysyła, i teraz pytanie brzmi czy po wykonaniu metody send() są czyszczone pola do wysyłki, czy by nie musiał uzyć jakieś metody typu $mal->clear(); czy coś, nie wiem jaka biblioteka została użyta.

Dlatego sobie autor niech kombinuje biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.