MySQL, PHP und Mail()-Kommado, hilfe!
Markus
- php
0 Tobias Kloth0 Markus
Ich habe folgendes skript zusammengeschrieben:
Nachdem ich in einer Newsletter-Admnistration auf Senden gedrückt habe:
<?php
$topic=$_POST['thema'];
$text=$_POST['inhalt'];
/* Connecting, selecting database */
$link = mysql_connect("SERVER", "USER", "PASSWORT")
or die("Could not connect : " . mysql_error());
mysql_select_db("DBNUMMER") or die("Could not select database");
$emails = mysql_query("SELECT * FROM emails");
/* Closing connection */
mysql_close($link);
mail("$NULL", "$Topic", "$text", "From:email@adress.de\nReply-To: email@adress.de\nX-Mailer: PHP\nBcc-to: $emails");
?>
Nun habe ich folgende Probleme:
Ich weiss nicht genau, ob $emails in Mail geht!
Ich weiss nicht genau, ob $NULL passt
Ich weiss nicht genau, ob Bcc-to: genau passt
Ich muss unbedingt wissen wie ich ZWISCHEN die einzelnen E-Mail-Adressen ", " (komma und leerzeichen) kriege, sonst versendet er ja nicht gescheit!
Ich danke jedem für Hilfe!
Hallo Markus,
$emails = mysql_query("SELECT * FROM emails");
mal abgesehen davon dass 'SELECT *' "böse" ist[1], stehen in $emails nicht die E-Mailadressen drin, sondern nur eine Ressourcen-Kennung auf die du eine der mysql_fetch_* Funktionen[2] loslassen kannst.
mail("$NULL",
wo kommt $NULL her?
"$Topic",
wo kommt $Topic her? (du hast oben nur $topic deklariert)
"$text",
die Anführungszeichen sind übrigends überflüssig (wie bei den zwei Variablen vorher ebenfalls.
Ich weiss nicht genau, ob $emails in Mail geht!
ähh... was willst du mit diesem Satz sagen?
Ich weiss nicht genau, ob $NULL passt
keine Ahnung, wo $NULL auf einmal herkommen soll.
Ich weiss nicht genau, ob Bcc-to: genau passt
ich nehme an, du meinst 'BCC'[3] (ohne '-to')?
Ich muss unbedingt wissen wie ich ZWISCHEN die einzelnen E-Mail-Adressen ", " (komma und leerzeichen) kriege, sonst versendet er ja nicht gescheit!
das kommt darauf an, am einfachsten dürfte es sein, die Adressen beim Abfragen der Datenbank in ein Array zu legen und dann per implode(',',$emailadressenarray)[4] 'zusammenzukleben'.
Grüße aus Nürnberg
Tobias
[1] http://www.dclp-faq.de/q/q-sql-select.html
[2] http://www.php.net/ref.mysql
[3] http://de3.php.net/function.mail (4. Beispiel)
[4] http://de2.php.net/implode
Hallo Markus,
$emails = mysql_query("SELECT * FROM emails");
mal abgesehen davon dass 'SELECT *' "böse" ist[1], stehen in $emails nicht die E-Mailadressen drin, sondern nur eine Ressourcen-Kennung auf die du eine der mysql_fetch_* Funktionen[2] loslassen kannst.mail("$NULL",
wo kommt $NULL her?
$NULL soll eigentlich NICHTS (leer) bedeuten
"$Topic",
wo kommt $Topic her? (du hast oben nur $topic deklariert)
das war ein schreibfehler
"$text",
die Anführungszeichen sind übrigends überflüssig (wie bei den zwei Variablen vorher ebenfalls.
egal, ich mache sie trotzdem wie bei html sonst komm ich durcheinander
Ich weiss nicht genau, ob $emails in Mail geht!
ähh... was willst du mit diesem Satz sagen?
ich wollte wissen ob $emails dann in BCC: zum beispiel "email1@freenet.deundemail2@web.dej.doe@yahoo.com" ausgibt, was es anscheinend nicht tut
Ich weiss nicht genau, ob $NULL passt
keine Ahnung, wo $NULL auf einmal herkommen soll.
siehe oben
Ich weiss nicht genau, ob Bcc-to: genau passt
ich nehme an, du meinst 'BCC'[3] (ohne '-to')?
ich will die user in die BCC und nicht in die normale empfängerliste eintragen, es muss ja nicht jeder jedes email sehen
Ich muss unbedingt wissen wie ich ZWISCHEN die einzelnen E-Mail-Adressen ", " (komma und leerzeichen) kriege, sonst versendet er ja nicht gescheit!
das kommt darauf an, am einfachsten dürfte es sein, die Adressen beim Abfragen der Datenbank in ein Array zu legen und dann per implode(',',$emailadressenarray)[4] 'zusammenzukleben'.
Bitte ein Beispiel, womit ich nun genau "email@freenet.dejohn.doe@web.desomebody@yahoo.com" oder ähnliches zurückgelierfert bekommen, du sagtest es geht mit fetch?
Ich glaube mit dem Beispiel auf PHP.net kann ich was anfangen, das schein genau das zu sein, wonach ich suche...
<?php
$array = array('$das-ergebnis-das-kommt-wo-du-mir-noch-sagen-musst-wie');
$comma_separated = implode(", ", $array);
print $comma_separated;
\* $comma_separated ist dann auch quasi das, wa ich bei mail einsetzen muss?? \*
?>
Danke im Voraus
Grüße aus Nürnberg
Tobias[1] http://www.dclp-faq.de/q/q-sql-select.html
[2] http://www.php.net/ref.mysql
[3] http://de3.php.net/function.mail (4. Beispiel)
[4] http://de2.php.net/implode
Hallo Markus,
mail("$NULL",
wo kommt $NULL her?
$NULL soll eigentlich NICHTS (leer) bedeuten
das geht nicht - an irgendjemand muss php die E-Mail doch schicken (zumal $NULL für php eine Variable wie jede andere auch ist.)
die Anführungszeichen sind übrigends überflüssig (wie bei den zwei Variablen vorher ebenfalls.
egal, ich mache sie trotzdem wie bei html sonst komm ich durcheinander
na wenn du meinst - schneller wird dein Script davon aber nicht ...
ich wollte wissen ob $emails dann in BCC: zum beispiel "email1@freenet.deundemail2@web.dej.doe@yahoo.com" ausgibt, was es anscheinend nicht tut
wie denn auch? du sagst es php ja nicht, dass die Adressen in $emails stehen sollen :-)
Ich weiss nicht genau, ob Bcc-to: genau passt
ich nehme an, du meinst 'BCC'[3] (ohne '-to')?
ich will die user in die BCC und nicht in die normale empfängerliste eintragen, es muss ja nicht jeder jedes email sehen
dann würde ich für jede Adresse einmal mail() aufrufen (es kommt vielleicht darauf an, wieviele Adressen in der Datenbank stehen, wenn es zu viele sind, dürfte es zu lange dauern.)
Bitte ein Beispiel, womit ich nun genau "email@freenet.dejohn.doe@web.desomebody@yahoo.com" oder ähnliches zurückgelierfert bekommen,
nö, ein fertiges Beispiel gibt es nicht :-)
du sagtest es geht mit fetch?
du musst die Ressourcen-Kennung die mysql_query zurückgibt verarbeiten:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
mail($row['emailadresse'],...); //wenn du die Email direkt verschickst (s.o.)
}
(siehe auch http://de2.php.net/mysql_fetch_assoc)
$array = array('$das-ergebnis-das-kommt-wo-du-mir-noch-sagen-musst-wie');
naja, _müssen_ tue ich überhaupt nicht :-)
um die E-Mailadressen in ein Array zu bekommen, ist es am einfachsten statt des mail() ein $array[] = $row['emailadresse'] in die while-Schleife zu schreiben, dann hast du nach der Schleife ein Array namens $array, in dem die E-Mailadressen stehen.
\* $comma_separated ist dann auch quasi das, wa ich bei mail einsetzen muss?? \*
ja (wenn du die E-Mails allle auf einmal verschickst)
Grüße aus Nürnberg
Tobias