Problem Newsletterversand

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem Newsletterversand

    Hallo,
    ich komme bei meinem Vorhaben irgendwie nicht weiter.
    Problem: Ich habe ca. 3000 Kontakte, die des Öfteren via Newsletter informiert werden sollen. Nun hatte ich es bislang so gemacht, dass ich sämtliche E-Mail-Adressen aus meiner DB in einen String gepackt habe, un danach alle in den BCC gespeist habe, jedoch funktionierte es mal nicht und dann doch wieder. Nun habe ich gelesen, dass es "besser" wäre, den Mailversand pro Kontakt einzeln abzuwickeln.
    Nun gut, jedoch ist mein Problem, dass ich nicht darauf komme wie ich den Mysql-Output ($Mailempfaenger = mysql_fetch_array($result)) in einer for-Schleife abwickle. Ich möchte immer 200 Newsletter mit dieser Methode versenden und dann das Script/die Seite neu laden, da sonst, die Laufzeit eventl. zu hoch werden könnte.
    Ich vermute, ich stelle mich da gerade einfach zu dumm an. Das ist bislang der klägliche Beginn:
    PHP-Code:
    <?php 
    ini_set
    ('display_errors',ON); 
    error_reporting(E_ALL); 
    require(
    'connect.inc.php'); 
    $selectReceivers "SELECT email FROM contacts ORDER BY email DESC"
    $receiverSelectionResult mysql_query($selectReceivers) or die(mysql_error()); 
    while (
    $receiver mysql_fetch_array($receiverSelectionResult)) {  
    ?>
    Frage: Wie sieht die Schleifenabwicklung aus?

  • #2
    also das sieht doch eigentlich ganz ok aus... in der Schleife solltest du in jedem $receiver['email'] hast du dann die mailadressen... oder wo ist dein Problem??
    signed oder unsigned... das ist hier die Frage

    Kommentar


    • #3
      Das Problem liegt darin, dass ich nicht weiß wie ich die 200er Beschränkung einbaue?!

      Kommentar


      • #4
        Wenn du pro seiten aufruf 200 Email versenden willst muss in deine SQL anweisung am ende noch folgendes rein

        PHP-Code:
        LIMIT 0,200 
        Das heißt beginnent ab 0 und 200 datensätze rausholen wenn du die Seite dann das 2. mal lädst musst du es dann mit


        PHP-Code:
        LIMIT 200,200 
        machen. Machst du einfach ne Varible die mit zählt wie oft die seite aufgerufen wurde und über GET mit gegeben wird un multiplizierst die mit 200 und fügst das dann da ein! Allerdings musst vorher gucken wie viele Datensätze du drin hast nicht das du ne endlos schleife bastelst, sobald dann die max anzahl erreicht wurde muss er dann zu ner anderen Seite linken!

        Das mit dem Weiterlink kannst mit meta tag über html machen oder in php mit

        PHP-Code:
        <? header("Location: seite.php&id=1"); ?>
        Wobei ich mich da nicht festlegen möchte ob das mit der PHP Variante funktioniert aber müsste eigentlich!

        lg Malte

        Kommentar


        • #5
          Alles klar, das klingt plausibel! Danke.
          Wenn jemand noch ne Schleifenvariante kennen sollte, würde die mich rein Interesse halber auch noch interessieren. Sofern es eine gibt!

          Kommentar


          • #6
            Es gibt Dinge, für die PHP und andere Web-Scriptsprachen einfach nicht geeignet sind...

            Kommentar


            • #7
              Und es gibt PHP-Scripte, die ruft man nicht im Browser auf
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Hallo,
                die Abwicklung habe ich jetzt funktionstüchtig gemacht und die funzt - fast!
                Wenn ich nun mit DW einen Newsletter kreiere, dann schickt er es mal ab und mal nicht. Ich vermute das Script verträgt manche Zeichen im Content des Newsletters nicht.
                Kann mir jemand sagen, welche das sein könnten?!

                PHP-Code:
                function sendNewsletter() { 
                $subject $_SESSION['newsletterSubject']; 
                $newsletterHeader '<html><head>';
                $newsletterHeader .= '<style type="text/css">body{font-family:arial; font-size:9px;}</style>';
                $newsletterHeader .= '</head><body>'
                $newsletterFooter '<div style=\"border-top:1px solid #666666;border-bottom:1px solid #666666;color:#323232; text-align:center;\">';
                $newsletterFooter .= 'Signatur';                             
                $newsletterFooter .= '</div></body></html>'
                $header 'From: Absender <Absender@Absender.de>' "\n"
                $header .= 'Content-type: text/html; charset=iso-8859-15' "\n"$content $_SESSION['newsletterContent']; 
                $totalcontent $newsletterHeader $content $newsletterFooter$totalcontent utf8_decode($totalcontent); 
                if (!
                $_SESSION['stpnt']) {     
                $start 0
                } else {     
                $start $_SESSION['stpnt']; 

                $_SESSION['end'] = $_SESSION['stpnt'] + 201
                $allReceivers mysql_query("SELECT * FROM contacts") or die(mysql_error()); 
                $all mysql_num_rows($allReceivers); 
                $selectReceivers "SELECT contactid, email FROM contacts ORDER BY contactid DESC LIMIT " $start ",200"
                $receiverSelectionResult mysql_query($selectReceivers) or die(mysql_error()); 
                while (
                $receiver mysql_fetch_array($receiverSelectionResult)) {
                $_SESSION['count'] = $_SESSION['count'] + 1;     
                $to $receiver['email'];     
                mail($to,$subject,$totalcontent,$header);     
                print 
                $_SESSION['count'] . ': ' $receiver['email'] . '<br />'

                if (
                $_SESSION['count'] != $all) { 
                print 
                '<script language="javascript" type="text/javascript">';
                print 
                'window.location.href=\'sendNewsletter.php?type=sendNewsletter&savety=' md5('newsletterSavety' date("Ymd") . 'viewingDone') . '\';'
                //php-resource entwertet nicht, trotz eigentlich gesetztem Backslash
                print '</script>'
                } else {     
                print 
                '<script language="javascript" type="text/javascript">';
                print 
                'alert(\'Newsletter has been sent!\');';
                print 
                '</script>';
                unset(
                $_SESSION['count'],$_SESSION['end'],$_SESSION['newsletterSubject'],$_SESSION['newsletterContent']); 


                Zuletzt geändert von KillUrMind; 11.07.2008, 12:40.

                Kommentar


                • #9
                  Keiner ne Idee?

                  Kommentar


                  • #10
                    versuch erstmal dein ganzes safety-zeugs wegzulassen, und schau mal, obs funktioniert.

                    Des weiteren, BITTE: einrücken, andernfalls kannst du nicht ernsthaft erwarten, dass sich jemand (oder zumindest ich ) mit dem code beschäftigt!

                    Greez
                    netsnake
                    | netsnake | www.netsnake.net |
                    Für Rechtschreibfehler, Denkfehler, Tippfehler, usw. übernehme ich KEINE HAFTUNG

                    Kommentar

                    Lädt...
                    X