Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Newsletter mit Reload und String Übergabe Antworten
Newsletter mit Reload und String Übergabe

diwie
Otto-Normal-Poster


Beiträge: 51


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:
<?php

/* Formular anzeigen, wenn Betreff und Newsletter NICHT übergeben wurden */
if(!$nl_betreff OR !$nl_text){

?>



This is the right place to formulate your newsletters.<br><br>
<table class="text" border="0" cellspacing="3" cellpadding="0"><form method="POST" action="<?php echo ($PHP_SELF."?page=admin&amp;action=newsletter&amp;UIN=".$UIN); ?>">
  <tr>
    <td><img src="./images/absatz_orange.gif" width="4" height="6" alt=""> <span class="text_small text_blue">sender</span><br><input type="text" class="text" name="nl_name" size="37" value="<?php echo $name; ?>"></td>
    <td colspan="2"><img src="./images/absatz_orange.gif" width="4" height="6" alt=""> <span class="text_small text_blue">email</span><br><input type="text" class="text" name="nl_email" size="38" value="<?php echo $antwortemail; ?>"></td>
  </tr>
  <tr>
    <td colspan="2"><img src="./images/absatz_orange.gif" width="4" height="6" alt=""> <span class="text_small text_blue">subject</span><br><input type="text" class="text" name="nl_betreff" size="82" value="<?php echo $standard_betreff; ?>"></td>
  </tr>
  <tr>
    <td colspan="2"><img src="./images/absatz_orange.gif" width="4" height="6" alt=""> <span class="text_small text_blue">text</span><br><textarea rows="18" name="nl_text" cols="80"></textarea></td>
  </tr>
  <tr style="padding-top: 10px;">
    <td><input type="submit" class="submit" value=" submit "></td>
    <td align="right"><input type="reset" class="submit" value=" reset " style="margin-right: 1px;"></td>
  </tr>
</form></table><br>

<?php


} else {

    /* Slashes entfernen */
    $nl_text = stripslashes($nl_text);


    /* Anhang an den Text d. Newsletters hängen */
     $nl_text .= $standard_anhang;

     $header = "MIME-Version: 1.0\n"; 
     $header .= "Content-type: text/html; charset=iso-8859-1\n"; 
     $header .= "From: " . $name . " <" . $antwortemail . ">\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&amp;action=newsletter&amp;UIN=".$UIN."&amp;nl_betreff=".$nl_betreff."&amp;nl_text=".$text."&amp;num=".$num."&amp;count=".$count;
                     echo "<script language=\"javascript\">self.location=\"".$reload."\"</script>";
                     }
 
    /* Bestätigung */

        $final = $count+$i;
	echo ("<span class=\"text_orange\">Result:</span> This newsletter was send out to " . $final . " subscribers."); include ("../footer_content_main.php"); die;

}

?>

  Profil   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


Als Session?

php.net/session



---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

diwie
Otto-Normal-Poster


Beiträge: 51


ich bin leider nicht so der php-experte. könntest du das bitte für mich noch etwas detailierter erläutern. genauere syntax wäre sehr schön. ;)

  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


http://php.net/session

da steht alles was du wissen musst!

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

diwie
Otto-Normal-Poster


Beiträge: 51


okay danke. werde mich durchackern.

  Profil   Editieren   Zitieren
 

Antworten
Nach oben