Prosty newsletter


(Grzesczwa) #1

Witam

od jakiegoś czasu próbuje napisać swój własny newsletter.

Oto fragment kodu zródłowego:

<?

	$link = mysql_connect('localhost', ' ******', '**********')

		or die ("Nie można nawi±zać poł±czenia 
");

	mysql_select_db (newsletter)

		or die ("Brak dostępu do bazy
");

	mysql_query('SET NAMES utf8');

?>

<? $zm = $_GET[zm]; if ($zm == NULL){ ?> Wyślij maile:

| Temat: | |
| Treść wiadomości: | |
|   | |

<? } if ($zm == wyslij){ $zapytanie = "SELECT * FROM `tmp`;"; $wynik = mysql_query ($zapytanie) or die ("Blad podczas wykonywania polecenia "); $tresc = iconv('UTF-8', 'utf-8', $tresc); require("phpmailer/class.phpmailer.php"); $mail = new PHPMailer(); while($line = mysql_fetch_array($wynik, MYSQL_ASSOC)) { $mail->IsSMTP(); $mail->PluginDir = "phpmailer/"; $mail->From = "wwwwwww@22222222"; $mail->FromName = "sssssss"; $mail->Host = "22222222"; $mail->Mailer = "smtp"; $mail->Username = "wwwwwww"; $mail->Password = "********"; $mail->SMTPAuth = true; $mail->CharSet = "utf-8"; $mail->SetLanguage("pl", "phpmailer/language/"); $mail->Subject = "$_POST[temat]"; $mail->IsHTML(true); $mail->Body = eregi_replace("[]",'',$_POST[textarea]); $mail->AddAddress("$line[mail]","$line[mail]"); if(!$mail->Send()) echo "Błąd wysłania maila do $line[mail] "; echo $mail->ErrorInfo." "; $mail->ClearAddresses(); echo "Wysłano maila do $line[mail]."; } echo " KONIEC wysyłki"; } ?>
[/code]

Wszystko u mnie prawie pięknie działa. Potrafi wysłać ponad 1000 maili.

Ale w formularzu po naciśnięciu przycisku Wyślij przeglądarka przerzuca do następnej strony po jakimś czasie. Dzieje się tak jak wysyłam dużo maili. Podejrzewam że chodzi tu o bufor przeglądarki.

Mam tu pytanie czy się da zrobić tak że jak wyśle już pierwszego maila od razu było wyświetlone na stronie że:

Wysłano maila do wwwwwww@22222222 itp a nie jak mi to czyni że po paru minutach wyświetla informacje do kogo wysłał maila.

Serdecznie Pozdrawiam

Grzes


(Zbyszekborkowski) #2

W PHP tego nie zrobisz. Jest to język po stronie serwera i wykonuje się w całości na nim, a strona jest wysyłana dopiero po całkowitym przetworzeniu skryptu. Więc jeśli skrypt ma do wysłania kilkaset maili, to musi to trochę potrwać zanim strona się "stworzy".

Wyświetlanie na bieżąco komunikatów wymaga Ajaksa. Wydaje mi się, że lepiej zrobić licznik wysłanych mailów (ile / z ilu) niż listę komunikatów o wysłaniu każdego listu.

Skrypt PHP mógłby zapisywać te informacje np. do jakiegoś pliku, a skrypt Ajax by je odczytywał.

Wrzuć kod tego newslettera w znaczniki

.

(Grzesczwa) #3

Dziękuje za informację swój kod wrzuciłem znaczniki w code.

Niestety nie znam ajakxa