Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] funkcja mail zwraca true podczas gdy maile nie dochodzą
Gallareton
post 2.09.2013, 21:43:00
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Gliwice

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


Problem polega na tym, że mam następujący kod
  1. <?
  2. $naglowki = "From: xxx@gmail.com".PHP_EOL."Reply-To: xxx@gmail.com".PHP_EOL."Content-type: text/plain; charset=iso-8859-2";
  3. //maile:
  4. $mail[] = 'gallareton@gmail.com';
  5. $mail[] = 'gallareton@mtv.pl';
  6.  
  7. for( $x = 0, $cnt = count($mail); $x < $cnt; $x++ ){
  8. $temp = $mail[$x];
  9. if(mail('$temp', 'test', 'test', $naglowki))
  10. {
  11. echo 'Mail do '."$temp".' zostal wyslany pomyslnie.<br>';
  12. }
  13. else
  14. {
  15. echo 'Nie udalo sie wyslac maila na adres '."$temp".'<br>';
  16. };
  17. };
  18. ?>

Jest on dostosowany do tego, żeby osoba nie mająca zielonego pojęcia o php mogła sobie powpisywać kolejne maile i wysłać masowo jakąś wiadomość. W każdym razie dopóki funkcja mail nie jest wykonywana wewnątrz pętli wszystko działa jak należy, mail się wysyła. Natomiast kiedy wsadzę kod do pętli to funkcja mail zwraca true, jednak na swojej skrzynce nic nie mam. Kombinowałem i kombinowałem, lecz wszystko działa tak długo jak funkcja mail nie jest w pętli.

Ten post edytował Gallareton 2.09.2013, 21:44:01


--------------------
Mowa jest srebrem, a milczenie złotem...
Lepiej milczeć i wydać się głupim, niż odezwać i rozwiać wszelkie wątpliwości...
Go to the top of the page
+Quote Post
thek
post 2.09.2013, 23:14:58
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Lepiej zobacz co zwraca funkcja mail. Nie informację o wysłaniu, ale że zostało przekazane do wysłania. To coś innego. W taki sposób, w krótkim odstępie czasu, możesz zasypać serwer poczty wiadomościami wychodzącymi. A to może zostać uznane za spam i tym samym zablokowane. Mimo więc, że dostajesz z funkcji mail prawdę, to serwer blokuje tę wysyłkę.

Inna sprawa, że niepotrzebnie przedwcześnie optymalizujesz. Tu foreach na początek wystarczy wink.gif Jeszcze inna sprawa to '$temp' w funkcji mail. Odpuść sobie single quoty wokół zmiennej, a zobaczysz różnicę także...


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Gallareton
post 2.09.2013, 23:25:46
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Gliwice

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


Ale różnicę robi samo wsadzenie funkcji do pętli. Jak ją wyjmę i odświeżę stronę z tym kodem 10x pod rząd to mam na skrzynce 10 maili. Jak wsadzam ją do pętli zwraca true, jednak maili nie ma.

A odnośnie $temp to jest, że tak powiem wsadzone tam metodą prób i błędów.. a konkretnie dlatego, że funkcja mail nie działała jeśli jako argument dostawała $mail[$x], natomiast zaczęła działać kiedy dostawała $temp. Nie rozumiem dlaczego tak jest, ale dostosowałem rozwiązanie do zachowania skryptu, to samo próbuję zrobić z pętlą ale zamiana jej na pętlę while powoduje ten sam efekt: funkcja zwraca true a maili nie ma.


--------------------
Mowa jest srebrem, a milczenie złotem...
Lepiej milczeć i wydać się głupim, niż odezwać i rozwiać wszelkie wątpliwości...
Go to the top of the page
+Quote Post
thek
post 3.09.2013, 00:02:37
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ale '$mail[$x]' nie ma prawa działać... bo wtedy jako adres email pod dokładnie to co napisałeś... Nie pobierze elementu o indeksie $x z tablicy mail, tylko tyle ile masz elementów, tyle razy wyśle mail pod adres '$mail[$x]' :/ Nie rozumiesz bowiem, że potraktuje to jako string. Naprawdę... przerób to na foreach, zamiast się z for czy while męczyć. Poza tym zyskasz na czytelności.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Gallareton
post 3.09.2013, 00:09:56
Post #5





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Gliwice

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


Właśnie zorientowałem się w czym problem i dziwię się, że nikt takiej głupoty nie zauważył.. przepraszam również za zaśmiecanie forum. $temp podawałem jako argument w apostrofach, przez co zamiast wartości zmiennej podawałem słowo $temp.. teraz już działa.


--------------------
Mowa jest srebrem, a milczenie złotem...
Lepiej milczeć i wydać się głupim, niż odezwać i rozwiać wszelkie wątpliwości...
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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 22:18