php E-Mail aus datenbank an mehrere Teilnehmer senden
udo
- php
Hallo,
ich habe ein kleines Problem:
Ich habe in einer Datenbank E-Mail Adressen hinterlegt und möchte nun an jeden der eine Checkbox aktiviert hat eine Mail senden.
Geht so weit auch 100 prozentig. Solange ich die Adressen im Code hinterlege.
Das auslesen aus der DB geht auch. Aber auch nur solange ich diese per echo anzeige.
Führe ich diese beiden Schritte zusammen, wird die Mail nicht mehr versendet.
Ich vermute das der Fehler folgender ist:
die Mail Adressen stehen so da: Max.Mustermann@muster.de,Min.Mustermann@muster.de,
ist dieses Komma am Ende wohl das Problem ?????
Hier noch mal der Code:
$abfrage = "SELECT mail FROM teilnehmer_dieda where news = 'Ja'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$auto_mail = $auto_mail .$row->mail.",";
}
mysql_free_result( $row );
Mahlzeit udo,
die Mail Adressen stehen so da: Max.Mustermann@muster.de,Min.Mustermann@muster.de,
Werden Email-Adressen nicht per Semikolon getrennt, wenn eine Email mehrere Empfänger hat?
ist dieses Komma am Ende wohl das Problem ?????
Möglich. Lass es doch einfach mal weg - was passiert dann?
MfG,
EKKi
Ich vermute das der Fehler folgender ist:
die Mail Adressen stehen so da: Max.Mustermann@muster.de,Min.Mustermann@muster.de,
ist dieses Komma am Ende wohl das Problem ?????Hier noch mal der Code:
$abfrage = "SELECT mail FROM teilnehmer_dieda where news = 'Ja'";
$ergebnis = mysql_query($abfrage);while($row = mysql_fetch_object($ergebnis))
{
$auto_mail = $auto_mail .$row->mail.",";}
mysql_free_result( $row );
Ich würde das überhaupt nicht so machen.
Pack die Empfänger in ein Array und geh dann mit foreach durch. Für jedes Foreach dann die Mail-Funktion mail()
foreach ($array as $value) {
mail(Empfängeremail (bzw. $value), Betreff, Nachricht, "From: Absender <Absenderemail>");
}
Grüße
Ich würde das überhaupt nicht so machen.
Pack die Empfänger in ein Array und geh dann mit foreach durch. Für jedes Foreach dann die Mail-Funktion mail()
foreach ($array as $value) {
mail(Empfängeremail (bzw. $value), Betreff, Nachricht, "From: Absender <Absenderemail>");
}
>
> Grüße
Hallo Matt,
erstmal vielen Dank für die schnelle Hilfe.
Könntest Du mir das noch einmal etwas genauer erklären. Ich bin relativ neu in der php Welt und habe mit forech noch nicht gearbeitet.
Was mache ich den noch falsch ????
Habe das jetzt so umgebaut:
$abfrage = "SELECT mail FROM teilnehmer_dieda where news = 'Ja' ";
$ergebnis = mysql_query($abfrage);
foreach ($ergebnis as $value) {
echo $value;
/* mail($value, Betreff, Nachricht, "From: Absender <Absenderemail>"); */
}
Hi udo!
$abfrage = "SELECT mail FROM teilnehmer_dieda where news = 'Ja' ";
$ergebnis = mysql_query($abfrage);
Du musst erst noch die Zeilen aus der Resource holen:
while($row = mysql_fetch_object($ergebnis)) {
echo $row->mail;
}
Ich hoffe, das hilft dir weiter.
Übrigens solltest du während der Entwicklung am Anfang deines PHP-Skriptes error_reporting(E_ALL),
schreiben. Damit bekommst du mehr eventuell hilfreiche Fehlermeldungen.
MfG H☼psel
Hi udo!
$abfrage = "SELECT mail FROM teilnehmer_dieda where news = 'Ja' ";
$ergebnis = mysql_query($abfrage);
Du musst erst noch die Zeilen aus der Resource holen:
while($row = mysql_fetch_object($ergebnis)) {
echo $row->mail;
}
>
> Ich hoffe, das hilft dir weiter.
> Übrigens solltest du während der Entwicklung am Anfang deines PHP-Skriptes `error_reporting(E_ALL),`{:.language-php} schreiben. Damit bekommst du mehr eventuell hilfreiche Fehlermeldungen.
>
> MfG H☼psel
Hi Hopsel,
ermal sehr sehr vielen Dank für die freundliche Hilfe. Aber es geht einfach nicht. An welcher Stelle bin ich den daneben ?
So schwer klingt das eigentlich doch nicht !
$abfrage = "SELECT mail FROM teilnehmer\_dieda where news = 'Ja' ";
$ergebnis = mysql\_query($abfrage);
while($row = mysql\_fetch\_object($ergebnis)) {
$array = $row->mail;
}
foreach ($array as $value) {
echo $value,"<br>"; /\* Hier soll nachher anstelle echo der mail Befehl h
/\* mail($value, Betreff, Nachricht, "From: Absender <Absenderemail>"); \*/
Hi Udo!
ermal sehr sehr vielen Dank für die freundliche Hilfe. Aber es geht einfach nicht. An welcher Stelle bin ich den daneben ?
Ohje... =)
So schwer klingt das eigentlich doch nicht !
Ist es auch nicht. Nur Mut!
$abfrage = "SELECT mail FROM teilnehmer_dieda where news = 'Ja' ";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {
// Hier müsstest du die Emails abschicken oder das Array aufbauen
// Also entweder Emails abschicken:
mail($row->mail, Betreff, Nachricht, "From: Absender <Absenderemail>");
// oder das Array aufbauen mit:
$array[] = $row->mail;
// Du hattest die eckigen Klammern vergessen.
}
// Wenn du die Emails in der While-Schleife abschickst (was ich empfehle),
// dann brauchst du das foreach-Konstrukt nicht.
// Ansonsten:
foreach ($array as $value) {
mail($value, Betreff, Nachricht, "From: Absender <Absenderemail>");
// Ferdsch!
Ich würde es so machen:
$abfrage = "SELECT mail FROM teilnehmer_dieda where news = 'Ja' ";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {
// Für jeden Empfänger wird eine Email verschickt
mail($row->mail, Betreff, Nachricht, "From: Absender <Absenderemail>");
}
Für die Spalte news würde ich übrigens einen Wahrheitswert (Datentyp BOOLEAN bzw. BOOL, also false oder true) oder Zahlenwert (Datentyp TINYINT, also 0 oder 1) nehmen.
MfG H☼psel
Hi Hopsel,
vielen vielen Dank, so eine nette und unkomplizierte Hilfe habe ich schon lange nicht mehr bekommen.
Da war mein erster Gedanke ohne foreach-Konstrukt ja doch richtig.
Mich hat auch schon gewundert wofür den um while komme da ja auch nicht drum herum.
Es funktioniert scheinbar. Ich habe mit zwei Mail Adressen getestet, auf der einen kommt aber noch nichts an. Ich habe die aber zum testen mal getauscht, d.h. die andere zuerst. Scheint so zu klappen.
Echt noch mal vielen Dank. Kann den Aufbau auch 100% nach vollziehen. Super Danke
Ich würde das überhaupt nicht so machen.
Pack die Empfänger in ein Array und geh dann mit foreach durch. Für jedes Foreach dann die Mail-Funktion mail()
foreach ($array as $value) {
mail(Empfängeremail (bzw. $value), Betreff, Nachricht, "From: Absender <Absenderemail>");
}
>
> Grüße
Könnte mir den bitte irgend jemand helfen !
Ich habe jetzt Stundenlang getestest und gesucht und gelesen.
Aber mir wird nicht klar wie ich aus meiner Datenbank die Felder in ein Array packen kann um sie mit dem foreach aus zu lesen.