art newsletter
satanus
- php
Hallo Miteinander,
Ich habe jeniges Problem, und erbitte die Hilfe der allseits für ihren Support berühmten Mitglieder des SelfHTML-Forums.
Das Problem beschreibt sich darin, dass ich versucht habe, eine Art Newsletter zu programmieren. Da dieser nicht wie geplant funktioniert, habe ich das Programm auf das Wesentliche reduziert, und habe den Fehler entdeckt. Anscheinend wird das Mail nicht versendet, aber eigentlich doch (hä?).
Die Reduzierung auf das Wesentliche umfasst nun nurmehr eine Auslesung aus einer Datenbank (E-Mailadresse) und eine, in jedem Durchlauf der Schleife, Versendung eines Textes an die Adresse des aktuellen Durchlaufes.
Genau das funktioniert nicht. Weiß einer von euch warum das nicht tut?
Folgende Punkte sind schon einmal - meiner Prüfung nach - auszuschließen:
(1) Spamblocker meines E-Mailaddy anbieters... Ich habe nach der Schleife einen simplen "mail(...)"tag eingebaut, um zu prüfen, ob überhaupt eine Mail, von einem Server gesendet, nicht geblockt wird...
(2) Es wird überhaupt nichts gesendet... Durch Ausgabe aller benötigten Daten (E-Mailadresse, usw.) und des Rückgabewertes von mail() ist dies auch auszuschließen. Rückgabewert sei anscheinend "1", aber ich erhalte um Gottes Willen keine E-Mail
Hmm... Ich weiß echt nicht weiter..
Vielen Dank für eure großzügige Hilfe
mfG,
satanus
HeHe Teufelchen,
haste mal ne´n Code ?
Danke
achJA?
Servus,
türlich, türlich:
/***********************
require "./stuff/global.php";
//Klassendeklarierung und Inizialisierung der benötigten Variablen
$db = new database;
$db->host = $mhost;
$db->user = $muser;
$db->pass = $mpass;
$db->base = $mbase;
$db->connect();
$sdatum=date("ymd");
$sdatum1=$sdatum+14;
$string="select * from ".$dh\_termine."
where watch
>'".$sdatum."' and watch
<'".$sdatum1."'";
$db->query($string);
$num=$db->n_rows();
if($num<1) {
echo "Keine Termine vorhanden";
$suc=2;
}
else {
while($result=$db->f_array()) {
$string="select * from ".$dh\_letter."
where free
='1' order by id
";
$sql=mysql_query($string);
while($array=mysql_fetch_array($sql)) {
eval("$text=$result['".$array['lang']."_text'];");
$subject="(url.com) betreff";
$emailto=$array['email'];
$header="From: "url.com" me@localhost.com\nMIME-Version: 1.0\nContent-Type: text/plain; charset=iso-8859-1";
$content=.... irgendeintext...
$return=mail($emailto, $subject, $content, $header);
echo $return."<br><br>";
if($return) {
$suc=1;
}
else {
$suc=0;
break;
}
}
}
}
if($suc==1) echo "Erfolgreich versendet<br><br>";
elseif($suc==2) echo "";
else echo "Fehler<br><br>";
***********************/
hier wird bei "echo $return" immer "1" ausgegeben.. Demnäch müsste es eig. funktionieren, doch ganz im Gegenteil.. :-/
Gruß,
satanus hu hu hu
echo $begrueszung;
Auf den ersten und zweiten Blick kann ich den Fehler nicht erkennen. Aber:
Hier verwendest du zwar eine Klasse zur Datenbank-Abstraktion
$db = new database;
aber hier
$sdatum=date("ymd");
und hier
$string="select * from
".$dh\_termine."
wherewatch
>'".$sdatum."' andwatch
<'".$sdatum1."'";
wirst du schon wieder datenbankspezifisch (Format des Datumswertes, Maskierung von Schlüsselwörtern und Zeichenfolgen), und damit
$sql=mysql_query($string);
greifst du gleich direkt durch. Welchen Sinn hat dann die Abstraktion der DB-Zugriffe überhaupt?
eval("$text=$result['".$array['lang']."_text'];");
Das eval() ist hier überflüssig. Das lässt sich auch so schreiben:
$text = $result[$array['lang'] . '_text'];
Im Falle eines (mit oder ohne Absicht) "fehlerhaften" Eintrages wird dieser Fehleintrag dann nicht auch noch als PHP-Code ausgewertet. Es gibt dann nur eine Notice wegen des nicht vorhandenen Keys.
Hast du dir mal die Inhalte der Variablen, die du an mail() gibst anzeigen lassen? Hast du auch das error_reporting auf E_ALL stehen?
echo "$verabschiedung $name";
hallo
Hier verwendest du zwar eine Klasse zur Datenbank-Abstraktion
$db = new database;
das ist korrekt...
aber hier
$sdatum=date("ymd");
ja, und?
und hier
$string="select * from
".$dh\_termine."
wherewatch
>'".$sdatum."' andwatch
<'".$sdatum1."'";wirst du schon wieder datenbankspezifisch (Format des Datumswertes, Maskierung von Schlüsselwörtern und Zeichenfolgen), und damit
$sql=mysql_query($string);
greifst du gleich direkt durch. Welchen Sinn hat dann die Abstraktion der DB-Zugriffe überhaupt?
da es sich in ner schleife befindet, und das schonmal nicht funktioniert hat, ist das der einzige weg, wie es funktioniert.. ich maaag jetzt neeed alles umschreiben :-(
eval("$text=$result['".$array['lang']."_text'];");
Das eval() ist hier überflüssig. Das lässt sich auch so schreiben:
$text = $result[$array['lang'] . '_text'];
ah.. kuhl, thx ;-)
Im Falle eines (mit oder ohne Absicht) "fehlerhaften" Eintrages wird dieser Fehleintrag dann nicht auch noch als PHP-Code ausgewertet. Es gibt dann nur eine Notice wegen des nicht vorhandenen Keys.
nene, der passt scho..
Hast du dir mal die Inhalte der Variablen, die du an mail() gibst anzeigen lassen? Hast du auch das error_reporting auf E_ALL stehen?
ja.. das hat alles gepasst...
hey, ich könnte mal.. heureka!
;-)
gruß,
satanus
hallo
naja, es wird mal alles ausgegeben, aber es kommt nix an :-(
gruß
satanus
hallo
jetzt funktionierts... es lag an meinem provider
gruß
satanus