Hallo freundliche Helfer,
ich schlage mich seit Tagen mit folgendem Problem herum. Es geht um den größeren Versand von Newslettermails. Leider läuft php bei meinem Provider im safe-Mode, so das nur eine max. Ausführungszeit für Scripte von 30s erlaubt ist. Daher muß ich die im Augenblick 150 eingetragenen Mailadressen in mehreren Schritten verschicken.
Das realisiere ich mit einem MySQL-Query inkl. LIMIT Angabe in einer Schleife und anschließenden RELOAD der Seite. Das funktioniert auch soweit. Probleme habe ich nur beim Nachrichtentext ($nl_text). Dieser wird beim Start mittels Eintrag in einer Textarea übergeben. Bei dem Eintrag handelt es sich um HTML-Befehle die mittels Cut'n'Paste eingefügt werden, also auch mit Zeilenumbrüchen(!). Beim ersten Schwung verschickter Mails, also vor dem ersten Reload der Seite, wo die Übergabe in $nl_text noch durch das Formular geschieht, funktionert das auch hervorragend. Erst nach dem Reload und Übergabe der Variable über die aufzurufende URL, schneidet das Script nach einer bestimmten Anzahl Zeichen ab.
Gibt es keine Möglichkeit den HTML-Inhalt der Mail ($nl_text) anders zu sichern und nach dem Reload der Seite wieder einzulesen bzw. zu includen?
Das momentane Script, allerdings mit zu Testzwecken mail() an meine Adresse:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77: |
This is the right place to formulate your newsletters.
\n";
/* E-Mailadressen aus dem Verteiler holen */
/* Für jede E-Mailadresse wird nun die E-Mail abgeschickt */
$max = 40;
$limit = $num*$max;
$domain = "@domain.com";
$result = mysql_query("SELECT EMail " .
" FROM newsletter " .
" WHERE Aktivierung = '1' LIMIT $limit,$max " // so werden nur freigeschaltete Benutzer aus der Datenbank geholt
)or error(__LINE__,__FILE__,"Can not read the addresses!", mysql_error());
while ($row = mysql_fetch_array($result)) {
$i++;
$testmail = "info".$i.$domain;
mail($testmail, $nl_betreff, $nl_text, $header);
}
if($i == $max) {
$num++;
$count = $num*$max;
$text = eregi_replace("\r\n","",htmlspecialchars($nl_text));
sleep(1);
$reload = $PHP_SELF."?page=admin&action=newsletter&UIN=".$UIN."&nl_betreff=".$nl_betreff."&nl_text=".$text."&num=".$num."&count=".$count;
echo "";
}
/* Bestätigung */
$final = $count+$i;
echo ("Result: This newsletter was send out to " . $final . " subscribers."); include ("../footer_content_main.php"); die;
}
?> |