• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

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

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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?
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Ich tippe auf: Gar nicht.

Kannst Du mal den kompletten Sendealgo posten?
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
Ich tippe auf: Gar nicht.

Kannst Du mal den kompletten Sendealgo posten?


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.
 

funz3l

Goldparmäne
Registriert
12.11.07
Beiträge
559
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.
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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.

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.
 

funz3l

Goldparmäne
Registriert
12.11.07
Beiträge
559
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...:)
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
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++;
}
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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);
}
 

BigDan

Granny Smith
Registriert
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
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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

Daniel


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

funz3l

Goldparmäne
Registriert
12.11.07
Beiträge
559
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($daten->usermail, "Neuer Kommentar zum Beitrag $ma_id von $userkennung - Marketing Aufgabendefinition", $nachricht, $nachricht2);
}

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.
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
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);
}
Nein. Könnte nicht hinhauen. Mit $daten machst Du ja nichts.
Das von mir gepostete Codefragment sollte jedoch funktionieren.
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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);
}
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
Super!!!! Funzt prima! Danke dir!
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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++;
}


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?
 
Zuletzt bearbeitet:

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Wie könnte man jetzt noch eine Spruch unten in die Mail einfügen das auf die mail nicht geantwortet werden soll?

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
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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