Problem mit Newsletter

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

  • Problem mit Newsletter

    Guten Abend,

    ich habe ein Newsletterscript geschrieben:

    PHP-Code:
    $sql "SELECT * FROM dhs_linkadresse";
    $result mysql_query($sql);
    echo 
    'Der Newsletter wird jetzt verschickt ...<br><br>';

    // einmal verbinden reicht ! du kannst dann mehrere Mails darüber absetzen
    $fp fsockopen("localhost"25$errno$errstr20); $line fgets($fp256);
    fputs($fp"HELO localhost\r\n"); $line fgets($fp256);

    // jetzt alle Mails in Schleife hintereinander absetzen
    while ($row mysql_fetch_array($result))
    {
        
    $message str_replace('$id'$row['id'], $nachricht);
        
    $message2 str_replace('$email'$row['email'], $message1);
        
    $message3 str_replace('$homepage_url'$row['homepage_url'], $message2);

        
    # Hier die Mails per SMTP-Befehlen übertragen.

        
    fputs($fp"MAIL FROM: $absendername <$absenderemail>\r\n"); $line fgets($fp256);
        
    fputs($fp"RCPT TO: ".$row['email']."\r\n"); $line fgets($fp256);
        
    fputs($fp"DATA\r\n"); $line fgets($fp256);
        
    fputs($fp"Subject: $betreff\r\n");
        
    fputs($fp"Reply-To: $absendername <$absenderemail>\r\n\r\n");
        
    fputs($fp$message3."\r\n");
        
    fputs($fp"\r\n.\r\n"); $line fgets($fp256);
    }
    // und nu die Verbindung schließen !
    fputs($fp"QUIT"); $line fgets($fp256);
    fclose($fp);

    echo 
    'Newsletter komplett verschickt.'
    Wenn ich das Script aufrufe, erhalte ich die Meldung "Fatal error: Maximum execution time of 30 seconds exceeded in "
    Nehme ich dagegen die Zeilen
    $message = str_replace('$id', $row['id'], $nachricht);
    $message2 = str_replace('$email', $row['email'], $message1);
    $message3 = str_replace('$homepage_url', $row['homepage_url'], $message2);

    heraus, dann läuft das Script durch. Ich versende einen Newsletter, der innerhalb der email die email, id und homepage url des jeweiligen User ausgeben soll. Gibt es da noch eine andere Lösung?


    Mfg
    Zocker

  • #2
    str_replace() kann auch mit arrays arbeiten ... und für jedes replace eine neue variable zu belegen, ist imho unfug.
    Kissolino.com

    Kommentar


    • #3
      Vielen Dank für deinen Hinweis. Wie würde es deiner Meinung nach aussehen?


      Mfg
      Zocker

      Kommentar


      • #4
        PHP-Code:
        $var str_replace(array(), array(), $var); 
        schau mal dazu ins manual.
        Kissolino.com

        Kommentar


        • #5
          Hi,

          irgendwie stehe ich momentan auf dem Schlauch. Wie genau setze ich die Werte in das Array ein?

          Wenn ich es so mache
          PHP-Code:
          $message2 str_replace($row['id'], $row['email'], $row['homepage_url'], $message); 
          dann erhalte ich die Meldung: Warning: Wrong parameter count for str_replace() in



          Mfg
          Zocker

          Kommentar


          • #6
            Hallo,

            ich habe noch was im Manual da. Jetzt habe ich es so:

            PHP-Code:
            $message2 str_replace(
                array(
            "$id""$homepage_url"),
                array(
            "$row['id']""$row['homepage_url']"),
                
            $message2); 
            Nun bekomme ich den Fehler "Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in "



            Mfg
            Zocker

            Kommentar


            • #7
              PHP-Code:
              $message2 str_replace(
                  array(
              "$id""$homepage_url"),
                  array(
              "$row['id']""$row['homepage_url']"),
                  
              $message2); 
              wo steht eigentlich so ein unfug^^ ?

              schreib das mal so:
              PHP-Code:
              $message2 str_replace(
                  array(
              $id$homepage_url),
                  array(
              $row['id'], $row['homepage_url']),
                  
              $message2); 
              wenn du immer noch parse errors hast, poste mal die zeile plus 2-5 zeilen davor.
              Kissolino.com

              Kommentar


              • #8
                Guten Morgen,

                ich benutze nun die Anweisung:

                PHP-Code:
                $nachricht str_replace(array($id$homepage_url), array($row['id'], $row['homepage_url']), $nachricht); 
                Aber leider werden die Variablen nicht durch die Werte ersetzt.
                Der Newsletter sieht wie folgt aus:

                Ihr Eintrag ist leider unvollständig ! Bitte klicken Sie nachstehenden Link um Ihren Eintrag zu vervollständigen. http://$path/update_link.php?id=$id&homepage_url=$homepage_url Ihr Eintrag wird in 24 Stunden automatisch gelöscht, wenn kein Update von Ihnen erfolgt. Mit freundlichen Grüssen $pathnachricht

                Mfg
                Zocker

                Kommentar


                • #9
                  Hallo,

                  so jetzt werden die Variablen richtig ersetzt. Das Problem ist aber nun dass ich wieder mal eine Fehlermeldung erhalte:

                  Fatal error: Maximum execution time of 30 seconds exceeded in ...

                  Hier mein Code, mit dem ich den Newsletter verschicke:

                  PHP-Code:
                  $fp fsockopen("localhost"25$errno$errstr20); $line fgets($fp256);
                  fputs($fp"HELO localhost\r\n"); $line fgets($fp256);


                  // jetzt alle Mails in Schleife hintereinander absetzen
                  while ($row mysql_fetch_array($result))
                  {
                      
                  $message1 str_replace(array('$id''$homepage_url'), array($row['id'], $row['homepage_url']), $message);

                      
                  # Hier die Mails per SMTP-Befehlen übertragen.

                      
                  fputs($fp"MAIL FROM: $absendername <$absenderemail>\r\n"); $line fgets($fp256);
                      
                  fputs($fp"RCPT TO: ".$row['email']."\r\n"); $line fgets($fp256);
                      
                  fputs($fp"DATA\r\n"); $line fgets($fp256);
                      
                  fputs($fp"Subject: $betreff\r\n");
                      
                  fputs($fp"Reply-To: $absendername <$absenderemail>\r\n\r\n");
                      
                  fputs($fp$message1."\r\n");
                      
                  fputs($fp"\r\n.\r\n"); $line fgets($fp256);
                  }
                  // und nu die Verbindung schließen !
                  fputs($fp"QUIT"); $line fgets($fp256);
                  fclose($fp); 

                  Was mache ich nur falsch ?


                  Mfg
                  Zocker

                  Kommentar


                  • #10
                    Hallo,

                    ic h habe mir nun eine andere Version gebastelt.

                    PHP-Code:
                    if($action == "send_newsletter" && $senden == "Ja")
                    {
                        
                        
                    ######## Prüfung ob Daten vorhanden sind  ##########
                           
                    $exist_control mysql_query("SELECT * FROM dhs_linkadresse"$verbindung);
                           if(!
                    mysql_num_rows($exist_control)>=1)
                           {
                               
                    $meldung "keine_adressen";
                        }
                           else
                        {
                          
                    #############################################
                          ###### MySQL-daten werden abgefragt #########

                          
                    $main_daten_connect mysql_query("SELECT * FROM dhs_linkadresse WHERE id='$id'"$verbindung);
                          
                    $main_daten mysql_fetch_array($main_daten_connect);

                           
                    ###### timeout Daten #########
                           
                    if(!($start)){$start 0;}
                           if(!(
                    $sent_to)){$sent_to 0;}


                           
                    ###### Wieviele auf einmal versendet werden ########
                           
                    $send_amount 1;
                           
                    #######################################

                           ### mail-adressen werden ausgelesen ###
                           
                    $mail_connect mysql_query("SELECT * FROM dhs_linkadresse ORDER BY id LIMIT $start,$send_amount"$verbindung);
                           
                    $no_mail_connect mysql_num_rows($mail_connect);

                           
                    $anzahl_adressen mysql_num_rows($exist_control);


                           
                    ####################################################################
                           ############### Daten des Newsletters werden abgefragt #############
                           
                    $mails_sent_in_loop0;

                           while(
                    $daten mysql_fetch_array($mail_connect))
                              {
                               
                    $adresse $daten['email'];
                               
                    $betreff $betreff;

                               
                    ######### Inhalt #########
                               
                    $inhalt $content;
                               if(
                    $main_daten[content_type] == "text"){$inhalt eregi_replace("{abmelde-Link}","".$script_url."delete.php?action=del&mail=$daten[mail]","$inhalt");}
                               else{
                    $inhalt eregi_replace("{abmelde-Link}","<a href=\"".$script_url."delete.php?action=del&mail=$daten[mail]\">$daten[mail] abmelden</a>","$inhalt");}

                               
                    ### Der Newsletter wird versendet ###
                               
                    $newsletter mail($adresse$betreff$inhalt$header);

                               
                    $sent_to++;
                               
                    $mails_sent_in_loop++;

                               
                    ##### Wenn die Anzahl von Adressen erreicht wurde wird der user
                               ##### ermittelt von dem an in der naechsten Schleife versendet werden soll
                               
                    if($mails_sent_in_loop == $no_mail_connect){$start $sent_to+1;}
                               if(
                    $sent_to == $anzahl_adressen)
                                 {
                                  break;
                                  
                    $still_sending "no";
                                 }
                                else{
                    $still_sending "yes";}

                              }
                    # while ende

                             ### Wenn noch versendet wird die Seite refresht
                             
                    if($still_sending == "yes")
                               {
                                echo 
                    "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
                                echo 
                    "<meta http-equiv=\"refresh\" content=\"3; Url=email_send2.php?action=send_newsletter&senden=Ja&id=$id&sent_to=$sent_to&start=$start&m=$m\">\n";

                                
                    $meldung "still_sending";
                               }

                             
                    ######## Wenn der Newsletter komplett versendet wurde ###############
                             
                    else
                               {
                                
                    $log mysql_query("INSERT INTO $tab_log SET vorgang='<b><font color=\"red\">Newsletter \"$main_daten[betreff]\" wurde versendet</font></b>', datum='$datum', type='admin'"$verbindung);
                                
                    $update_main mysql_query("UPDATE $tab_main SET status='versendet' WHERE id='$id'"$verbindung);
                                
                    $meldung "alles_versendet";

                                echo 
                    "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
                                
                    benachrichtigung("alles_verschickt""");
                               }
                         } 
                    #ende $exist_control 
                    Es werden aber keine emails verschickt, obwohl über 3000 email adressen in der tabelle vorhanden sind.


                    Mfg
                    Zocker

                    Kommentar


                    • #11
                      Hast Du Dir mal Gedanken darüber gemacht was die Fehlermeldung "Fatal error: Maximum execution time of 30 seconds exceeded in " eigentlich bedeutet?

                      Kommentar

                      Lädt...
                      X