1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

PHP - mail immer nur an ersten DB User ändern auf alle

Dieses Thema im Forum "PHP & Co." wurde erstellt von Tyrra, 30.06.09.

  1. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869
    Hallo, in meinem PHP-Script (mail) habe ich folgendes drinnen:

    $usermail = mysql_result($result, 0, "usermail");

    Die "0" besagt das der erste User eine mail erhält - wie stelle ich diese Zeile so um das alle in der DB eine Mail erhalten?
     
  2. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Ich tippe auf: Gar nicht.

    Kannst Du mal den kompletten Sendealgo posten?
     
  3. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869

    Klar mache ich das:

    mysql_select_db("lohi_marketing");
    $sql = "SELECT * FROM users";
    $result = mysql_db_query($db, $sql);
    $usermail = mysql_result($result, 0, "usermail");

    $nachricht = $kommentare;
    $nachricht2 = $betreff;
    $nachricht = wordwrap($nachricht, 70);
    $nachricht2 = wordwrap($nachricht2, 70);
    mail($usermail, "Neuer Kommentar zum Beitrag $ma_id von $userkennung - Marketing Aufgabendefinition", $nachricht, $nachricht2);

    Der "db_connect" ist ganz oben.
     
  4. funz3l

    funz3l Prinzenapfel

    Dabei seit:
    12.11.07
    Beiträge:
    551
    Würde ich mit ner While Schleife umsetzen.
    Übrigens "SELECT * FROM" ist nich gerade vorteilhaft für die sicherheit. Immer explizit angeben welche Felder aus der Datenbank geladen werden sollen.
     
  5. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869
    Das ist voll richtig - mach ich später noch rein - ich habe blos keine Lösung parat wie ich das auf mehrere bzw. alle User umbauen kann.
     
  6. funz3l

    funz3l Prinzenapfel

    Dabei seit:
    12.11.07
    Beiträge:
    551
    While Schleife:
    (Einfaches beispiel unter umständen würde ich noch die Daten aus der Datenbank überprüfen ob zum beispiel wirklich ne mail adresse drinnen steht etc.)

    Code:
    $sql = "SELECT name, email FROM users";
         $ergebnis = mysql_query($sql);
          while($daten = mysql_fetch_object($ergebnis))
               {    
               //Hier kommt die mailfunktion rein.
               //Die daten aus der Datanbank werden mit $daten->name bzw. $daten->email angesprochen
              }
    
    hoffe das ist so verständlich hab mir das gerade mal so aus dem finger gesaugt...:)
     
  7. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Das hier schickt eine Mail pro Adresse heraus, so dass das "An:"-Feld nicht überflutet wird:
    Code:
    mysql_select_db("lohi_marketing");
    $sql = "SELECT * FROM users";
    $result = mysql_db_query($db, $sql);
    
    $nachricht = $kommentare;
    $nachricht2 = $betreff;
    $nachricht = wordwrap($nachricht, 70);
    $nachricht2 = wordwrap($nachricht2, 70);
    
    
    $row=0;
    while ($usermail=mysql_result($result, $row, "usermail"))
    {
    mail($usermail, "Neuer Kommentar zum Beitrag $ma_id von $userkennung - Marketing Aufgabendefinition", $nachricht, $nachricht2);
    $row++;
    }
    
    
     
  8. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869
    könnte das so hinhauen?:

    $sql = "SELECT name, usermail FROM users";
    $ergebnis = mysql_query($sql);
    while($daten = mysql_fetch_object($ergebnis))
    {
    $nachricht = $kommentare;
    $nachricht2 = $betreff;
    $nachricht = wordwrap($nachricht, 70);
    $nachricht2 = wordwrap($nachricht2, 70);
    mail($usermail, "Neuer Kommentar zum Beitrag $ma_id von $userkennung - Marketing Aufgabendefinition", $nachricht, $nachricht2);
    }
     
  9. BigDan

    BigDan Granny Smith

    Dabei seit:
    04.07.07
    Beiträge:
    17
    Hi,

    es gibt zwei wege. Entweder du kreierst eine komma sparierte Liste deiner eMail adressen und packst die in den BCC, oder du sendest per schleife jedem user eine eigene Mail.

    Egal welchen weg du gehst, du musst mit ner schleife ueber das result array laufen und dann abarbeiten.

    So ungefaehr

    Code:
    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    $usermail = row[x];
    $nachricht = $kommentare;
    $nachricht2 = $betreff;
    $nachricht = wordwrap($nachricht, 70);
    $nachricht2 = wordwrap($nachricht2, 70);
    mail($usermail, "Neuer Kommentar zum Beitrag $ma_id von $userkennung - Marketing Aufgabendefinition", $nachricht, $nachricht2);
    }
    
    Ich kenne Dein DB Schema nicht, das x im row[x] ist die nummer der Spalte in der die eMail gespeichert ist.

    Zu der BCC loesung musst du selber ein wenig lesen. Dieser code soll auch nur ne anregung sein, mein PHP is sehr rostig, da gibbet sicher elegantere Loesungen.

    Hoffe es hilft Dir trozdem.

    Gruss

    Edit: Hmm da waren die anderen ja schon schneller beim tippen

    Daniel
     
  10. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869

    Danke, ich tendiere eher zur ersteren Lösung mit Schleife. BCC braucht es nicht ;)
    Irgendwie bekomme ich grade die Code-Schnipsel nicht richtig zusammen :)
     
  11. funz3l

    funz3l Prinzenapfel

    Dabei seit:
    12.11.07
    Beiträge:
    551
    Du musst dann aber die einzelnen Felder richtig ansprechen.
    $daten->usermail (hab das im zitat oben mal so eingesetzt)

    Hab die mailfunktion hie rjetzt nicht so wirklich im kopf um zu sagen ob das stimmt aber sollte so dann eigentlich funktionieren.
     
  12. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Nein. Könnte nicht hinhauen. Mit $daten machst Du ja nichts.
    Das von mir gepostete Codefragment sollte jedoch funktionieren.
     
  13. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869
    Irgendwie passt das nicht - Oder? :)

    mysql_select_db("lohi_marketing");
    $sql = "SELECT name, usermail FROM users";
    $ergebnis = mysql_query($sql);
    while($daten = mysql_fetch_object($ergebnis))
    {
    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    $usermail = row[x];
    $nachricht = $kommentare;
    $nachricht2 = $betreff;
    $nachricht = wordwrap($nachricht, 70);
    $nachricht2 = wordwrap($nachricht2, 70);
    mail($usermail, "Neuer Kommentar zum Beitrag $ma_id von $userkennung - Marketing Aufgabendefinition", $nachricht, $nachricht2);
    }
     
  14. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Tyrra gefällt das.
  15. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869
    Super!!!! Funzt prima! Danke dir!
     
  16. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869

    Das funzt prima!


    Wie könnte man jetzt noch eine Spruch unten in die Mail einfügen das auf die mail nicht geantwortet werden soll?
     
    #16 Tyrra, 30.06.09
    Zuletzt bearbeitet: 30.06.09
  17. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Ich sehe gerade, dass Du die Mail-Funktion nicht ganz richtig aufgebaut hast (oder enthält $nachricht2 Header-Informationen?)

    Versuch mal
    mail($usermail, "Neuer Kommentar zum Beitrag $ma_id von $userkennung - Marketing Aufgabendefinition", $nachricht);

    $nachricht setzt Du dann z.B. wie folgt zusammen.
    $nachricht = $kommentare ."\n". $betreff ." \n\nHier steht der Spruch, dass man nicht antworten soll";




    $nachricht2= kann dann wegfallen
     
  18. Tyrra

    Tyrra Holländischer Prinz

    Dabei seit:
    17.12.07
    Beiträge:
    1.869
    Hab`s jetzt so gelöst:

    //automatisch Mailversand wenn eine Änderung oder ein neuer Beitrag erstellt wurde an alle User in DB
    mysql_select_db("lohi_marketing");
    $sql = "SELECT * FROM users";
    $result = mysql_db_query($db, $sql);

    $nachricht = $kommentare;
    $nachricht = wordwrap($nachricht, 70);
    $hint = "Diese Benachrichtigungsmail wurde automatisch versand - Bitte nicht darauf antworten!";

    $row=0;
    while ($usermail=mysql_result($result, $row, "usermail"))
    {
    mail($usermail, "Marketing Aufgabendefinition - Kommentar von $userkennung zum Beitrag: $betreff", $hint, $nachricht);
    $row++;
    }
    //mailversand ende
     

Diese Seite empfehlen