Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla while problem
egonik
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 1.02.2012

Ostrzeżenie: (0%)
-----


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ć
Go to the top of the page
+Quote Post
szok
post
Post #2





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

Ostrzeżenie: (0%)
-----


Dlaczego po tablicy file, leciesz pętla while()? a nie pętla foreach() ? Jest wygodniejsza.


--------------------
Go to the top of the page
+Quote Post
lukaskolista
post
Post #3





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Jak oddzielasz adresy?
Go to the top of the page
+Quote Post
Majcon
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 27.11.2012
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


do{
kod ten (jestem na telefonie więc nie będę przepisywać go ;p)
}while($j < 1000)

Może tak biggrin.gif
Go to the top of the page
+Quote Post
szok
post
Post #5





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

Ostrzeżenie: (0%)
-----


  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.

Ten post edytował szok 21.12.2012, 23:49:28


--------------------
Go to the top of the page
+Quote Post
Kofel
post
Post #6





Grupa: Zarejestrowani
Postów: 99
Pomógł: 22
Dołączył: 14.12.2007
Skąd: Wyszków

Ostrzeżenie: (0%)
-----


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>";


Ten post edytował Kofel 21.12.2012, 23:56:12
Go to the top of the page
+Quote Post
szok
post
Post #7





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Kofel
post
Post #8





Grupa: Zarejestrowani
Postów: 99
Pomógł: 22
Dołączył: 14.12.2007
Skąd: Wyszków

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
szok
post
Post #9





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Kofel
post
Post #10





Grupa: Zarejestrowani
Postów: 99
Pomógł: 22
Dołączył: 14.12.2007
Skąd: Wyszków

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:10