Jak wysłać jednorazowo np. 10,000 emaili do swoich subkrymentów i przy tym nie zakorkować serwera?
Rozwiązanie znajdziesz poniżej, a jest nim skrypt który cyklicznie wysyła maile. Co prawda trochę długo to trwa bo ~ 1000 emaili wyśle z domyślnie ustawiona sesją (3 sekundy; 10 podczas jednej) w ok. 25 minut. Ale przynajmniej masz gwarancje, że je wyśle i się przy tym nie zawiesi, nie zatnie serwera... Po ustawianiu odpowiednich nagłówków można wysyłać również wiadomości w formie HTML.
Tak więc wysłanie nawet gigantycznej liczby emaili nie stanowi problemu, możesz więc bez większych przeszkód zrobić subkrybcję na własnej stronie :)
Wersja skryptu oparta jest na plikach .txt, ale można bez problemu przerobić ją na wersję SQL...
001 <?php
002
003 #---------------------------------
004 # Ekipa: TS, www.Twoja-Strona.net
005 #---------------------------------
006
007 $plik = "email.txt";
008 $max = 2;
009 $adres = "twoj_mail@twoja-strona.net";
010 $temat = "Temat Subkrybcji";
011 $tresc = "Treść maila";
012 $tresc .= "... tresć dalej";
013 $tresc .= "... it dalej.";
014 $czas = "3000";
015
016 #------------------------------
017
018 echo"<b><li>Restart:</li></b> <a href=\"".$_SERVER['PHP_SELF']."\">Wyślij od nowa</a><br>";
019 echo"<b><li>Adres nadawcy:</li></b> ".$adres."<br>";
020 echo"<b><li>Temat:</li></b> ".$temat."<br>";
021 echo"<b><li>Wiadomość:</li></b> ".nl2br($tresc)."<br><hr style=\"text-align: left\" /><br>";
022
023 #------------------------------
024
025 $file = @file($plik);
026 $strona = $_GET['id'];
027 $razem = @count($file);
028 $do_strony = $razem/$max;
029
030 if($strona!="" && $strona>0){
031 $od = $strona*$max;
032 $do = $od+$max;
033 $next = $strona;
034 }else{
035 $od = 0;
036 $do = $max;
037 $next = 0;
038 }
039
040 if($od>=$razem){
041 echo"Proces zakończony...";
042 }else{
043 for($i=$od;$i<$do&&$i<$razem;$i++){
044 if(@mail($file[$i], $temat, $tresc, "From: \"".$adres."\" <".$adres.">\n")){
045 echo"Wiadomość wysłana do: <b>".$file[$i]."</b><br>";
046 }else{
047 echo"Nie udało się wysłać maila do: <b>".$file[$i]."</b><br>";
048 }
049 }
050 }
051
052 $pozostalo = $razem-$do;
053 if($pozostalo<0){$pozostalo2=0;}else{$pozostalo2=$pozostalo;}
054 $jeszcze = $razem-$pozostalo2;
055 echo"<br><br><b>OD</b> = ".$od.", <b>DO</b> = ".$do.", <b>Pozostało do wysłania:</b> ".$pozostalo2.", <b>Wysłano:</b> ".$jeszcze." <b>na</b> ".$razem." (emaili).";
056
057 if($next<$do_strony){
058 $dalej = $next+1;
059 echo'<script language="Javascript" type="text/javascript">
060 <!--
061 function gotoThread(){
062 window.location.href="'.$_SERVER['PHP_SELF'].'?id='.$dalej.'";
063 }
064 window.setTimeout("gotoThread()", '.$czas.');
065 //-->
066 </script>';
067 echo"<hr style=\"text-align: left\" /><b><li>Dalej:</li></b> <a href=\"".$_SERVER['PHP_SELF']."?id=".$dalej."\">Kliknij gdy system się zawiesi</a>";
068 }
069
070 ?>
071
Pobierz Skrypt