Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP i MySQL] funkcja mail()
Forum PHP.pl > Forum > Przedszkole
terabit
Witam, mam taki kod:
  1. <?php
  2. include("config.php");
  3. $sql = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
  4. mysql_select_db(DB_NAME);
  5. $res = mysql_query("SELECT email FROM baza ORDER BY id");
  6. while ($row = mysql_fetch_array($res)) 
  7. { 
  8. $row['email'];
  9. }
  10.  
  11.  
  12. $listaemaili = $row['email'];
  13. $email = $_POST['trescemailu'];
  14. $header =  "From: email@serwis.pl nContent-Type:".' text/plain;charset="iso-8859-2"'."nContent-Transfer-Encoding: 8bit";
  15. if (mail($listaemaili, 'email', $email, $header))
  16. echo '<p>działa</p>';
  17. else 
  18. echo '<p>NIE wysłano maila!</p>';
  19.  
  20. ?>


problem w tym że nie chce mi wysyłać e-maili :/
jak wpisze w miejsce $listaemaili normalnie kilka e-maili po przecinku to nie ma problemu ale jak ma je pobrać z zmiennej $listaemiali to nie chce :/

w bazie wszystkie e-mailie maja taką formę - nazwa@domena.com,[przecinek] [spacja]
a wiec nie powinno być problemów

Bardzo proszę o pomoc
kossa
  1. <?php
  2. $listaemaili="";
  3.  
  4. $res = mysql_query("SELECT email FROM baza ORDER BY id");
  5. while ($row = mysql_fetch_array($res)) 
  6. { 
  7. $listaemaili. = $row['email']; 
  8. }
  9. ?>



a dlaczego trzymasz email z przecinkiem w bazie i spacja? smile.gif przeciez takie elementy dodaje sie przy wyciaganiu danych zbazy kiedy je sie formatuje, modyfikuje...

Łukasz
terabit
no ok wiem ze sie tam nie powinno
ale nawet tak jak jest teraz nie chce działać :/
kossa
napisalem Tobie jak masz pobrac meile, bo zle to robiles
wstaw moj kod w miejsce swojej petli while a z pod petli usun $listaemaili = $row['email'];

zawsze mozesz sprawdzi co zwraca zmiennna poprzez echo $listameili;

Łukasz
terabit
:/ nie działa
pewnie coś źle robie

kod:
  1. <?php
  2. include("config.php");
  3. $sql = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
  4. mysql_select_db(DB_NAME);
  5.  
  6. $listaemaili="";
  7.  
  8. $res = mysql_query("SELECT email FROM baza ORDER BY id");
  9. while ($row = mysql_fetch_array($res)) 
  10. { 
  11. $listaemaili. = $row['email']; 
  12. }
  13.  
  14.  
  15. $email = $_POST['trescemailu'];
  16. $header =  "From: email@serwis.pl nContent-Type:".' text/plain;charset="iso-8859-2"'."nContent-Transfer-Encoding: 8bit";
  17. if (mail($listaemaili, 'email', $email, $header))
  18. echo '<p>działa</p>';
  19. else 
  20. echo '<p>NIE wysłano maila!</p>';
  21.  
  22. ?>
kossa
przed $email = $_POST['trescemailu'];

zrób sobie echo $listaemaili; i zobacz czy meile masz w zmiennej i w jakiej formie

Łukasz
terabit
teraz mam tai kod
i wysyla tylko na ostatni e-mail :/

  1. <?php
  2. include("config.php");
  3. $sql = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
  4. mysql_select_db(DB_NAME);
  5.  
  6. $res = mysql_query("SELECT email FROM bazaORDER BY id");
  7. while ($row = mysql_fetch_array($res)) 
  8. { 
  9. $listaemaili = $row['email']; 
  10. }
  11.  
  12. echo $listaemaili;
  13. $email = $_POST['trescemailu'];
  14. $header =  "From: email@serwis.pl nContent-Type:".' text/plain;charset="iso-8859-2"'."nContent-Transfer-Encoding: 8bit";
  15. if (mail($listaemaili, 'email', $email, $header))
  16. echo '<p>działa</p>';
  17. else 
  18. echo '<p>NIE wysłano maila!</p>';
  19.  
  20. ?>



echo $listaemaili; tez wyświetla tylko ostatni e-mail (ostatni rekord) winksmiley.jpg
kossa
podałem Tobie z kropką .= i wcześniej też poprawnie wkleiłeś kod a teraz masz bez kropki, w pętli ma być
  1. <?php
  2. $listaemaili .= $row['email'];
  3. ?>


Łukasz
terabit
ooo smile.gif sorry biggrin.gif już działa

kossa wielkie dzięki ! smile.gif
kossa
Tak na koniec to rozwiązanie które implementuesz ma wadę taką żę po otrzymaniu meila każdy będzie widział do kogo ten email został wysłany... nie każdy chciałby aby wszyscy korzystający z Twojego serwisu WWW znali jego adres. Lepiej by było abyś w pętli do każdego usera wysyłał meila indywidualnie podczas wyciągania adresów z tabeli w bazie (wtedy bez tej kropki i od razu przed } wykonujesz funkcję mail, oczywiście przed pętlą while musisz zadeklarować temat, treść meila. Pamiętać też musisz że jeśli będzie ogromna ilość meil w bazie to może wystąpić time out (przekroczony czas wykonywania skryptu) albo inny problem - meile mogą być traktowane jako spam. Jak z tym wszystkim walczyć to poszukaj tematu na forum (szukaj: mail) miał kikadziesiąt postów więc znajdziesz tam na pewno jakieś dobre rozwiązanie.

Łukasz
terabit
właśnie tak przeglądając otrzymane e-maile ( z mojego skryptu ) pomyślałem ;]

dzięki za pomoc winksmiley.jpg
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.