Autor |
Nachricht |
addy
Threadersteller
Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 23.09.2005 11:23
Titel PHP Mail Problem |
|
|
ich will nach einem Formular die Daten per Mail verschicken hat sonst auch immer prima geklappt, jetzt hab ich das ganze mal in eine Klasse ausgelagert, da funzt es net mehr???? Also ich kann das Form. abschicken und er leitet mich dann auch auf die DANKE seite weiter, aber die mail kommt nicht an! Muss man was beachten wenn man mail() in ne Klasse auslagert???
hier mal der code:
form.inc.php
Code: |
function mail(){
mail ("a.schrader@egal.net","Nachricht von Vektor-Massivhaus.de",
"von:$anrede $vorname $name\n\n"
."firma: $firma \n\n"
."email: $email \n\n"
."Betreff:$betreff\n\n "
."Text: $text"
);
header("Location: form_end.php");
exit();
}
|
kontakt.php
Code: |
if ($button == "absenden"){
$fehler = $form->check($anrede,$name,$email,$betreff,$text);
if(!$fehler){
$form->mail();
}
}[quote]
weiß einer Rat?
Danke schonmal[/quote] |
|
|
|
|
|
metty
Dabei seit: 21.03.2005
Ort: Köln
Alter: 39
Geschlecht:
|
Verfasst Fr 23.09.2005 11:44
Titel
|
|
|
Wenn ich das richtig sehe, hast du keine Klasse sondern eine Funktion geschrieben und die in einer Date ausgelagert.
Dann solltest du die Date erstmal per "require" oder "include" einbinden und dann die Funktion aufrufen.
|
|
|
|
|
Anzeige
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Fr 23.09.2005 11:51
Titel
|
|
|
also da wundert mich gar nichts, daß dieses script nicht wie gewünscht funktioniert...
1. es gibt keine klasse
2. deine funktion wird nicht eingebunden
3. du versuchst die interne php-funktion mail() mit einer eigenen funktion namens mail() zu überschreiben.
4. $form->mail(); - wo ist dein objekt? was hast du instantiiert, wenn keine klasse vorhanden ist? welche mail-funktion ist gemeint? deine oder die von php?
5. dein location-header ist nicht korrekt. da muß ein vollständiger url mit http:// hin. so kannst du nicht sicher sein, daß es wirklich überall funktioniert.
6. argh! was heißt "funzt nicht"? wieso ist es denn so schwer, eine anständige problembeschreibung zu liefern? (gibt, es fehlermeldungen? wenn ja, welche? was genau passiert? was passiert nicht bzw. sollte deiner meinung nach passieren? usw. usf.)
Zuletzt bearbeitet von rob am Fr 23.09.2005 11:54, insgesamt 2-mal bearbeitet
|
|
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Fr 23.09.2005 12:02
Titel
|
|
|
und noch was...
also du hast scheinbar einen button, dem du den namen "button" (wie einfallsreich ) zugewiesen hast und einen value von "absenden", ja?
und dann kommt diese abfrage:
Zitat: | if ($button == "absenden") |
auf einem anständig konfiguriertem server wird das in keinem fall funktionieren.
wenn da noch php3 läuft, dann funktioniert es.
oder wenn php aus gründen der rückwärtskompatibiliät zu alten php-versionen mit register_globals=on konfiguriert ist - dann funktioniert es auch noch.
aber wenn der provider eine nur halbwegs aktuelle php-version installiert hat und ein wenig auf sicherheit bedacht ist (man kann ja nicht davon ausgehen, daß die user in der lage sind, anständige scripte zu schreiben), dann ist register_globals nicht aktiviert und es gibt deine variable $button gar nicht.
je nachdem, wie dein formular verschickt wird, heißt die variable dann $_POST['button'] oder $_GET['button'].
deine abfrage sollte also vermutlich Code: | if ( isset( $_POST['button'] ) ) | heissen.
der wert des buttons ist sicherlich unwichtig, da die variable ja eh nur gesetzt wird, wenn das formular abgeschickt wird und das wolltest du ja wohl nur wissen...
Zuletzt bearbeitet von rob am Fr 23.09.2005 12:03, insgesamt 1-mal bearbeitet
|
|
|
|
|
addy
Threadersteller
Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 23.09.2005 12:20
Titel
|
|
|
sorry wollte nicht den ganzen code posten
nein es gibt ne Klasse
Code: |
<?php
class form {
function check($anrede,$name,$email,$betreff,$text){
if($anrede == ""){
$fehler['anrede'] = "Bitte wählen Sie eine Anrede aus";
}
if($name == ""){
$fehler['name'] = "Bitte geben Sie einen Namen ein";
}
if($email == ""){
$fehler['email'] = "Bitte geben Sie eine E-Mail Adresse ein";
}
if($betreff == ""){
$fehler['betreff'] = "Bitte geben Sie einen Betreff ein";
}
if($text == ""){
$fehler['text'] = "Bitte geben Sie eine Nachricht ein";
}
return $fehler;
}
function mail(){
mail ("a.schrader@design1220.de","Nachricht von Vektor-Massivhaus.de",
"von:$anrede $vorname $name\n\n"
."firma: $firma \n\n"
."email: $email \n\n"
."Betreff:$betreff\n\n "
."Text: $text"
);
header("Location: form_end.php");
exit();
}
}
?> |
zu dem button:
Zitat: |
$button = $_GET['button']; |
wie gesagt es funz soweit, ich klick abschicken der geht in die funktion rein und leitet mich über header auch auf die "danke für ihre nachricht seite", ABER eben die mail kommt nicht an, sonst funzt es!
kann es daran liegen das ich die funktion mail genannt habe und es die in php schon gibt? aber dann würde er mich ja nicht weiterleiten oder?
|
|
|
|
|
caZpa
Account gelöscht
Ort: -
|
Verfasst Fr 23.09.2005 12:25
Titel
|
|
|
es fehlt der absender, bzw mail header
Code: | $text = $_POST['text'];
$mail = 'mail@irgendwas.de';
$subject = $_POST['betreff'];
$header= 'From: "'.$_POST['name'].'" <'.$_POST['email'].'>
Reply-To: mail@irgendwas.de //wichtig: ohne führende leerzeichen oder tabs!
Content-Type: text/plain; charset=us-ascii //wichtig: ohne führende leerzeichen oder tabs!
MIME-Version: 1.0 //wichtig: ohne führende leerzeichen oder tabs!
Content-Transfer-Encoding: 8bit //wichtig: ohne führende leerzeichen oder tabs!
Organisation: FIRMA'; //wichtig: ohne führende leerzeichen oder tabs!
if(mail($mail,$subject,$text,$header)){
... |
Zuletzt bearbeitet von am Fr 23.09.2005 12:29, insgesamt 2-mal bearbeitet
|
|
|
|
|
addy
Threadersteller
Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 23.09.2005 12:34
Titel
|
|
|
wie jetzt, kannste mir das mal genauer erklären bitte!?
bis jetzt hab ich immer folg. script verwendet
Code: |
if( ($button == "absenden") & (!$fehler['name'] ) ) {
mail ("a.schrader@nopa-valves.de","Nachricht von nopa-valves.de",
"von:$anrede $vorname $name\n\n"
."firma: $firma \n\n"
."email: $email \n\n"
."Betreff:$betreff\n\n "
."Text: $text"
);
header("Location: http://www.nopa-valves.de/new/form_end.php");
exit();
} |
halt nur net in Klassen ausgelagert sondern direkt in die php datei mit reingeschrieben und das hat immer gefunzt und ich habs ja eigentlich fast 1:1 übernommen und es geht ja fast (weiterleitung etc.9 nur das halt die mail net ankommt??
|
|
|
|
|
caZpa
Account gelöscht
Ort: -
|
Verfasst Fr 23.09.2005 12:47
Titel
|
|
|
ne geht auch ohne
ist aber shitty, weil die mails dann wohl oft als spam gefiltert werden...
guck dir das nochma an
Code: |
function mail(){
mail ("a.schrader... |
fällt dir was auf?
|
|
|
|
|
|
|
|
Ähnliche Themen |
php mail() Problem?
MAIL Problem
[php] problem mit mail();
Problem mit e-Mail-Formular
Problem mit Apple Mail
E-Mail Briefpapier mit MS Outlook Problem
|
|