|
|
|
jak wysłać maila do wszystkich z bazy |
« Zobacz poprzedni temat :: Zobacz następny temat » |
Autor |
Wiadomość
|
Martin |
Wysłany: 17 Lip 2005, 19:39 Temat postu: jak wysłać maila do wszystkich z bazy |
|
|
KCS_Admin
Dołączył: 17 Cze 2005 Posty: 5566
Skąd: Piaseczno
|
Już kilka osób zadawało mi to pytanie w mailach. Jak wysłać maila do wszystkich z bazy, ale przy okazji aby mieć pewność że mail do wszystkich doszedł..
To o czym na pewno trzeba pamiętać przy wysyłaniu maili do większej ilości adresatów z bazy np: 10 000 userów to to, że każdy skrypt PHP ma określony czas działania, np. 30 sekund. Po tym czasie jego wykonywanie zostaje natychmiast przerwane. Wysłanie 10 000 maili z pewnością trwa dłużej niż 30 sekund, więc musisz zadbać, aby czas wykonywania skryptu był dostosowany do Twoich potrzeb.
Aby zmienić czas wykonywania skryptu skorzystaj z polecenia set_time_limit().
Kod: | <?
set_time_limit(360);
?> |
a kod do wysyłania i pbierania adresów z bazy to:
PHP: |
<?php
if (mysql_connect($sql_serwer, $sql_login, $sql_haslo)
and mysql_select_db($sql_baza))
{
$wynik = mysql_query("SELECT mail FROM user");
$rekordow = mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);
set_time_limit($rekordow*5);
while($dane = mysql_fetch_array($wynik))
{
$mail = $dane["mail"];
mail($mail,"tytul","tresc","nadawca@serwer.pl");
echo "wyslano maila do: $mail<br />";
}
mysql_close();
}
else
echo "Nie można połączyć się z bazą danych";
?>
|
Bezpiecznie jest założyć, że czas wysyłania jednego e-maila trwa ok. 5 sekund. Możesz więc użyc konstrukcji, która pomnoży ilość odbiorców * 5:
Kod: | set_time_limit($rekordow*5); | _________________ Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami |
|
Powrót do góry |
|
|
KCS |
Wysłany: Temat postu: Reklama w KCS |
|
|
|
|
Powrót do góry |
|
|
PIKSAR |
Wysłany: 01 Cze 2006, 22:27 Temat postu: |
|
|
Bywalec
Dołączył: 19 Sie 2005 Posty: 148
Skąd: Cz?stochowa
|
Wersja Marcina coś nie chciała mi smigać więc wprowadziłem kilka zmian i zamieszczam zmodyfikowana aplikacje do wysylania masowych wiadomosci pobierajac adresy z bazy:
PHP: |
<? if (mysql_connect($sql_serwer, $sql_login, $sql_haslo)
and mysql_select_db($sql_baza))
{
$zapytanie="SELECT * FROM user";
$wynik = mysql_query($zapytanie);
while ($dane = mysql_fetch_array($wynik))
{
$mail = $dane['mail'];
mail($mail,"tytul","$data_rejestracji","nadawca@serwer.pl");
echo "wyslano maila do: $mail<br />";
}
mysql_close();
}
else
echo "Nie można połączyć się z bazą danych";
?>
|
_________________ Pozdrawiam |
|
Powrót do góry |
|
|
Martin |
Wysłany: 02 Cze 2006, 08:05 Temat postu: |
|
|
KCS_Admin
Dołączył: 17 Cze 2005 Posty: 5566
Skąd: Piaseczno
|
Jedyną zmianą jaką zrobiłeś to wywaliłeś bardzo ważną linię z kodu:
Kod: | set_time_limit($rekordow*5); |
Powiedz mi co zrobisz jak będziesz musiał wysłać maila do 10 000 userów w bazie? Przy kodzie bez tej lini mail nie zostanie wysłany do wszystkich. Bez tej lini jest OK, ale tylko przy małej bazie adresów e-mail. _________________ Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami |
|
Powrót do góry |
|
|
PIKSAR |
Wysłany: 02 Cze 2006, 13:26 Temat postu: |
|
|
Bywalec
Dołączył: 19 Sie 2005 Posty: 148
Skąd: Cz?stochowa
|
No tak, można to dodać, ale głównie chodziło mi o: Kod: | (mysql_query("SELECT FOUND_ROWS()"),0) | _________________ Pozdrawiam |
|
Powrót do góry |
|
|
Martin |
Wysłany: 02 Cze 2006, 13:54 Temat postu: |
|
|
KCS_Admin
Dołączył: 17 Cze 2005 Posty: 5566
Skąd: Piaseczno
|
To jest zapytanie SQL o zliczanie rekordów w tabeli z mailami, aby później tą liczbę wykorzystać w set_time_limit();, jeżeli konfiguracja na serwerze MySQL, lub wersja nie pozwala Ci zastosować tego zapytania to warto zastosować pytanie o ilość w PHP, aby nie rezygnować z manewrowania set_time_limit:
Kod: | $rekordow=mysql_num_rows($wynik);
set_time_limit($rekordow*5); |
tj efekt końcowy:
PHP: |
<?php
if (mysql_connect($sql_serwer, $sql_login, $sql_haslo)
and mysql_select_db($sql_baza))
{
$wynik = mysql_query("SELECT mail FROM user");
$rekordow=mysql_num_rows($wynik);
set_time_limit($rekordow*5);
while($dane = mysql_fetch_array($wynik))
{
$mail = $dane["mail"];
mail($mail,"tytul","tresc","nadawca@serwer.pl");
echo "wyslano maila do: $mail<br />";
}
mysql_close();
}
else
echo "Nie można połączyć się z bazą danych";
?>
|
_________________ Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami |
|
Powrót do góry |
|
|
kidler |
Wysłany: 21 Wrz 2008, 09:55 Temat postu: |
|
|
Nowicjusz
Dołączył: 21 Wrz 2008 Posty: 1
|
a da się jakoś wprowadzić nadawcę wiadomości, żeby nie było "nieznany nadawca" tylko email, który wprowadzę? |
|
Powrót do góry |
|
|
|
|
|
|
Strona 1 z 1 |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|
|
|