automatischer Emailversand an alle user nach eintrag in die Datenbank

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

  • automatischer Emailversand an alle user nach eintrag in die Datenbank

    Hallo Leute
    ich denke mal, das ich mit diesem Problem bestimmt einige zum lachen bringen werde, aber ich stehe grad mit diesem Problem voll auf dem Schlauch.

    Also: Auf meiner Page hat man die Möglichkeit ein Event zu hinterlassen, das es jeder lesen kann. Mann kann auch seine Email hinterlassen(die nicht sichtbar bleibt).
    Nun mein Problem: Ich möchte, das jede eingetragene Email automatisch eine Infomail bekommt sobald jemand anderes ein Event veröffentlicht.
    Nur leider gehen die Mails nicht raus!!! Wo liegt der Fehler?
    Kann mir jemand dabei helfen? Wäre jetzt schon dankbar.

    Hier hab ich mal den Code

    PHP-Code:
    <?php require_once('Connections/Datenbank.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      if (
    PHP_VERSION 6) {
        
    $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }

      
    $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
    $theValue;
    }
    }

    $editFormAction $_SERVER['PHP_SELF'];
    if (isset(
    $_SERVER['QUERY_STRING'])) {
      
    $editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
    }

    if ((isset(
    $_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      
    $insertSQL sprintf("INSERT INTO event (id, wer, wann, betreff, wo, event) VALUES (%s, %s, %s, %s, %s, %s)",
                           
    GetSQLValueString($_POST['id'], "int"),
                           
    GetSQLValueString($_POST['wer'], "text"),
                           
    GetSQLValueString($_POST['wann'], "date"),
                           
    GetSQLValueString($_POST['betreff'], "text"),
                           
    GetSQLValueString($_POST['wo'], "text"),
                           
    GetSQLValueString($_POST['event'], "text"));

      
    mysql_select_db($database_Datenbank$Datenbank);
      
    $Result1 mysql_query($insertSQL$Datenbank) or die(mysql_error());
    $us_query "SELECT * FROM event_mail WHERE email=%s";
    if ( 
    $us_result mysql_query($us_query) ) {
        while ( 
    $row mysql_fetch_array($us_result) ) {
     
    $empfaenger  $row["email"];
    $betreff 'Eventbenachrichtigung';
    $nachricht '
    <html>
    <head>
      <title>Motorradfreunde Event - Benachrichtigung</title>
    </head>
    <body>
      <p>Hallo Biker. Du bekommst diese Mail, weil du dich in die Liste eingetragen hast.</p>
      <table>
        <tr>
          <th>Es sind neue Events eingegangen - Schau gleich mal nach</th>
        </tr>
        <tr>
          <td> Mit diesen Link kommst du direkt dorthin <a href="www.motorradfreunde-reutlingen.com/event_sehen" target="_new">Hier klicken</a></td>
        </tr>
        <tr>
          <td></td>
        </tr>
      </table>
    </body>
    </html>
    '
    ;
    $header  'MIME-Version: 1.0' "\r\n";
    $header .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
    $header .= 'To: ' "\r\n";
    $header .= 'From: Motorradfreunde Reutlingen<>' "\r\n";
    $header .= 'Cc: ' "\r\n";
    $header .= 'Bcc: ' "\r\n";
        }
        
    mysql_free_result($us_query);
    }
    mail($empfaenger$betreff$nachricht$header);
      

      
    $insertGoTo "event_sehen.php";
      if (isset(
    $_SERVER['QUERY_STRING'])) {
        
    $insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
        
    $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      
    header(sprintf("Location: %s"$insertGoTo));
    }
    ?>

  • #2
    Thema verschoben, hat nichts mit Tutorials zu tun.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo,

      Woher weißt du, dass die Mails nicht rausgehen? Hast du sichergestellt, dass in $row["email"] immer eine korrekte E-Mail-Adresse steht? Hast du testweise mal eine feste Adresse als $empfaenger eingesetzt? Warum erzeugst du so viele ungültige E-Mail-Header? Wenn du sie nicht brauchst, lass sie weg. Wenn du sie jedoch so verstümmelst, bettelst du den SMTP-Server ja geradezu, sie nicht zu akzeptieren und selbst wenn er das tut, verfängt sie sich in irgendeinem Spamfilter.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Hallo Amica

        Ich hab mich mal an deine Worte gehalten und hab die überflüssigen $header rausgenommen. Wenn ich meine eigene Email eintrage, ist das kein Problem, mit dem versenden. Was ich möchte, ist das jeder, der seine Emailadresse in der Datenbank hinterlassen hat, eine automatische Nachricht erhält wenn ein Event eingetragen wurde. Ich wäre ja dann gezwungen, jedesmal zu kontrollieren, ob jemand seine Emailadresse hinterlegt hat. Wie stelle ich das an??
        Wäre für deine Hilfe echt dankbar

        Gruß Jens


        PHP-Code:
          mysql_select_db($database_Datenbank$Datenbank);
          
        $Result1 mysql_query($insertSQL$Datenbank) or die(mysql_error());
        $us_query "SELECT * FROM event_mail WHERE email=%s";
        if ( 
        $us_result mysql_query($us_query) ) {
            while ( 
        $row mysql_fetch_array($us_result) ) {
         
        mysql_free_result($us_query); 
             }

         
        $empfaenger  "meine Email" ', ';
        $betreff 'Eventbenachrichtigung';
        $nachricht '
        <html>
        <head>
          <title>Motorradfreunde Event - Benachrichtigung</title>
        </head>
        <body>
          <p>Hallo Biker. Du bekommst diese Mail, weil du dich in die Liste eingetragen hast.</p>
          <table>
            <tr>
              <th>Es sind neue Events eingegangen - Schau gleich mal nach</th>
            </tr>
            <tr>
              <td> Mit diesen Link kommst du direkt dorthin <a href="www.motorradfreunde-reutlingen.com/event_sehen" target="_new">Hier klicken</a></td>
            </tr>
          </table>
        </body>
        </html>
        '
        ;
        $header  'MIME-Version: 1.0' "\r\n";
        $header .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
        $header .= 'From: Motorradfreunde Reutlingen<>' "\r\n";

        mail($empfaenger$betreff$nachricht$header);


          
        $insertGoTo "event_sehen.php";
          if (isset(
        $_SERVER['QUERY_STRING'])) {
            
        $insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
            
        $insertGoTo .= $_SERVER['QUERY_STRING'];
          }
          
        header(sprintf("Location: %s"$insertGoTo));
        }
        ?> 

        Kommentar


        • #5
          Nach welchem Konzept gehst du vor? Blind irgendwelche Codeschnippsel zusammenkopieren?

          Das was du da machst, hat nichts mit Programmieren zu tun.

          Dein Ablauf sollte in etwa so aussehen:

          1) Hole alle User aus der Datenbank, die eine E-Mail angegeben haben. (Hast du unvollständig == falsch implementert.)
          2) Gehe das Ergebnis in einer Schleife durch. (Funktioniert bereits)
          3) Versende die E-Mail an die jeweilige E-Mail Adresse (Funktioniert ja quasi auch, nur dass du den Code in die Schleife setzen musst)

          Fertig!

          Jetzt bitte stück für Stück umsetzen. Am besten bei 1 anfangen, bei Problemen oder ersten Ergebnissen einfach wieder Posten. Aber bitte mit Konkreten Problemstellungen und nicht nach dem Motto "Macht ihr mal...".

          Kommentar


          • #6
            Also ehrlich gesagt, bin ich ein Mensch mit 2 linken Händen, was PHP angeht.
            Die ganze Page habe ich mittels eines Programms zusammen gestellt und mich teilweise aus dem I-net informiert. Bis her hat auch alles funktioniert. Jetzt, wo es daran geht, was ein Programm nicht macht, ist mein Latain am Ende.
            Sorry.

            Ich hatte jetzt nur noch eine Lösung. Ich habe eine Verteilerliste in meienm Acount angelegt und jede Emailadresse von Hand eingefügt. Da ich Fernfahrer bin, habe ich leider auch nicht immer Zeit, um zu kontrollieren, wenn neue Emailadressen hinzugekommen sind.
            Wenn mir irgendeiner den richtigen Code liefern könnte, würde ich ihm zu Füßen liegen.

            Hier hab ich nochmal einen Ausschnitt von dem aktuellen Code.
            Ich weis nicht, was wo rein muß - vor allen Dingen WAS

            PHP-Code:
              mysql_select_db($database_Datenbank$Datenbank);
              
            $Result1 mysql_query($insertSQL$Datenbank) or die(mysql_error()); 
            $us_query "SELECT event_mail FROM email";
            if ( 
            $us_result mysql_query($us_query) ) {
                while ( 
            $row mysql_fetch_array($us_result) ) {
             
            mysql_free_result($us_query); 
                 }


            $empfaenger  =  "event@motorradfreunde-reutlingen.com" ;
            $betreff 'Eventbenachrichtigung';
            $nachricht '
            <html>
            <head>
              <title>Motorradfreunde Event - Benachrichtigung</title>
            </head>
            <body>
              <p>Hallo Biker. Du bekommst diese Mail, weil du dich in die Liste eingetragen hast.</p>
              <table>
                <tr>
                  <th>Es sind neue Events eingegangen - Schau gleich mal nach</th>
                </tr>
                <tr>
                  <td> Mit diesen Link kommst du direkt dorthin <a href="www.motorradfreunde-reutlingen.com/event_sehen" target="_new">Hier klicken</a></td>
                </tr>
              </table>
            </body>
            </html>
            '
            ;
            $header  'MIME-Version: 1.0' "\r\n";
            $header .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
            $header .= 'From: Motorradfreunde Reutlingen<>' "\r\n";

            mail($empfaenger$betreff$nachricht$header);

              
            $insertGoTo "event_sehen.php";
              if (isset(
            $_SERVER['QUERY_STRING'])) {
                
            $insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
                
            $insertGoTo .= $_SERVER['QUERY_STRING'];
              }
              
            header(sprintf("Location: %s"$insertGoTo));
            }
            ?> 
            Danke Jens
            Zuletzt geändert von jens1468; 02.04.2012, 12:26.

            Kommentar


            • #7
              Sodele ich bins nochmal
              Sorry, das ich euch damit auf den Geist gehe. Aber ich habe es immerhin geschafft, das Emails aus der Datenbank gelesen wird und auch verschickt, aber nur an die erste eingetragene adresse(meine eigene).
              Wie bekomme ich es jetzt nur noch hin, das auch alle anderen die Mail bekommen?

              Bitte, bitte helft mir.

              Hier ist jetzt der aktuelle Code

              PHP-Code:
              <?php require_once('Connections/Datenbank.php'); ?>
              <?php
              if (!function_exists("GetSQLValueString")) {
              function 
              GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
              {
                if (
              PHP_VERSION 6) {
                  
              $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
                }

                
              $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

                switch (
              $theType) {
                  case 
              "text":
                    
              $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
                    break;    
                  case 
              "long":
                  case 
              "int":
                    
              $theValue = ($theValue != "") ? intval($theValue) : "NULL";
                    break;
                  case 
              "double":
                    
              $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
                    break;
                  case 
              "date":
                    
              $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
                    break;
                  case 
              "defined":
                    
              $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
                    break;
                }
                return 
              $theValue;
              }
              }

              mysql_select_db($database_Datenbank$Datenbank);
              $query_mail "SELECT email FROM event_mail WHERE email LIKE '%@%'";
              $mail mysql_query($query_mail$Datenbank) or die(mysql_error());
              $row_mail mysql_fetch_assoc($mail);
              $totalRows_mail mysql_num_rows($mail);

              $currentPage $_SERVER["PHP_SELF"];


              $editFormAction $_SERVER['PHP_SELF'];
              if (isset(
              $_SERVER['QUERY_STRING'])) {
                
              $editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
              }

              if ((isset(
              $_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
                
              $insertSQL sprintf("INSERT INTO event (id, wer, wann, betreff, wo, event) VALUES (%s, %s, %s, %s, %s, %s)",
                                     
              GetSQLValueString($_POST['id'], "int"),
                                     
              GetSQLValueString($_POST['wer'], "text"),
                                     
              GetSQLValueString($_POST['wann'], "date"),
                                     
              GetSQLValueString($_POST['betreff'], "text"),
                                     
              GetSQLValueString($_POST['wo'], "text"),
                                     
              GetSQLValueString($_POST['event'], "text"));

                
              mysql_select_db($database_Datenbank$Datenbank);
                
              $Result1 mysql_query($insertSQL$Datenbank) or die(mysql_error()); 
               
              $empfaenger  $row_mail ["email"];
              $betreff 'Eventbenachrichtigung';
              $nachricht '
              <html>
              <head>
                <title>Motorradfreunde Event - Benachrichtigung</title>
              </head>
              <body>
                <p>Hallo Biker. Du bekommst diese Mail, weil du dich in die Liste eingetragen hast.</p>
                <table>
                  <tr>
                    <th>Es sind neue Events eingegangen - Schau gleich mal nach</th>
                  </tr>
                  <tr>
                    <td> Mit diesen Link kommst du direkt dorthin <a href="www.motorradfreunde-reutlingen.com/event_sehen" target="_new">Hier klicken</a></td>
                  </tr>
                </table>
              </body>
              </html>
              '
              ;
              $header  'MIME-Version: 1.0' "\r\n";
              $header .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
              $header .= 'From: Motorradfreunde Reutlingen<>' "\r\n";

              mail($empfaenger$betreff$nachricht$header);

                
              $insertGoTo "event_sehen.php";
                if (isset(
              $_SERVER['QUERY_STRING'])) {
                  
              $insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
                  
              $insertGoTo .= $_SERVER['QUERY_STRING'];
                }
                
              header(sprintf("Location: %s"$insertGoTo));
              }
              ?>

              Kommentar


              • #8
                Worked as designed:
                PHP-Code:
                $mail mysql_query($query_mail$Datenbank) or die(mysql_error());
                $row_mail mysql_fetch_assoc($mail); 
                Du holst dir nur die erste gefundene Mail. Du musst statt dessen mit einer Schleife arbeiten.
                PHP-Code:
                while ($row_mail mysql_fetch_assoc($mail)) 
                Peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Hi
                  Sobald ich eine Schleife daraus mache, kommt keine Mail mehr an.
                  Was ist da jetzt das Problem?

                  PHP-Code:
                  mysql_select_db($database_Datenbank$Datenbank);
                  $query_mail "SELECT email FROM event_mail WHERE email LIKE '%@%'";
                  $mail mysql_query($query_mail$Datenbank) or die(mysql_error());
                  while (
                  $row_mail mysql_fetch_assoc($mail));
                  $totalRows_mail mysql_num_rows($mail); 
                  Gruß Jens

                  Kommentar


                  • #10
                    Zitat von jens1468 Beitrag anzeigen
                    Was ist da jetzt das Problem?
                    Dass du keine Ahnung von Grundlagen hast.
                    PHP-Code:
                    while ($row_mail mysql_fetch_assoc($mail)); 
                    Weißt du denn, was hier passiert? Ist das die korrekte Schleife? Nein. Lies dir mal das Tutorial durch, da werden diese Dinge gezeigt.

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Hallo,

                      auf einigen Servern erzeugt das \r\n einen Fehler, weil es falsch umgesetzt wird. Auf Windows läuft alles wunderbar, aber Server sind meist auf Unix oder Linux Systemen aufgesetzt. Wenn du das \r einfach entfernst sollte es auch mit deinem Code gehen. Ich habe jetzt nicht genau geschaut, ob der übrige Code stimmt, aber dieses Umbruchproblem hat mich auch schon Nerven gekostet.

                      Probier es einfach ...

                      Gruss

                      Fredi

                      Kommentar


                      • #12
                        Zitat von mycat Beitrag anzeigen
                        Wenn du das \r einfach entfernst sollte es auch mit deinem Code gehen.
                        Nee, sollte es nicht. Wenn schon die while-Schleife murks ist, kann der Rest auch nicht funktionieren.

                        Peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Hallo Leute
                          Ich habe es inzwischen selbst hinbekommen. Hatte nur noch keine Zeit gehabt, es zu posten. Aber hier ist jetzt der richtige Code

                          PHP-Code:
                          $result mysql_query("SELECT email FROM event_mail"$Datenbank) or die(mysql_error());
                            if (
                          mysql_num_rows($result) > 0) {
                              while (
                          $row mysql_fetch_array($resultMYSQL_ASSOC)) {
                           
                          $empfaenger  $row["email"];
                          $betreff 'Eventbenachrichtigung';
                          $nachricht '
                          <html>
                          <head>
                            <title>Motorradfreunde Event - Benachrichtigung</title>
                          </head>
                          <body>
                            <p>Hallo Biker. Du bekommst diese Mail, weil du dich in die Liste eingetragen hast.</p>
                            <table>
                              <tr>
                                <th>Es sind neue Events eingegangen - Schau gleich mal nach</th>
                              </tr>
                              <tr>
                                <td> Mit diesen Link kommst du direkt dorthin <a href="www.motorradfreunde-reutlingen.com/event_sehen" target="_new">Hier klicken</a></td>
                              </tr>
                            </table>
                          </body>
                          </html>
                          '
                          ;
                          $header  'MIME-Version: 1.0' "\r\n";
                          $header .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
                          $header .= 'From: Motorradfreunde Reutlingen <info@motorradfreunde-reutlingen.com>' "\r\n";


                          mail($empfaenger$betreff$nachricht$header);
                            
                              }
                              
                          mysql_free_result($result);
                          }

                            
                          header(sprintf("Location: %s"$insertGoTo));
                          }
                          ?> 

                          Kommentar

                          Lädt...
                          X