Antworten auf deine Fragen:
Neues Thema erstellen

Kontaktformular mit PHP und unerwünschte Absenderadresse

Zaolat

Aktives Mitglied

Moin Moin,

hoffe, ich bin in diesem Thread richtig.
Ich habe auf einer Homepage (welche mit dem CMS Contao läuft) ein Kontaktformular erstellt, welches die Daten zunächst an eine PHP datei sendet. Dort wird validiert und die Daten gefiltert, worauf hin dann mit den Daten aus dem Formular eine E-Mail an mich gehen soll und eine Bestätigungsmail an den Schreiber.

Das blöde ist nun, dass die Absender Adresse, welche ich von meinem Hoster bei Vertragsabschluss zugeteilt bekommen habe. Ich habe gestern die Nacht und den frühen heutigen Morgen mir um die Ohren geschlagen und nichts hilfreiches im Internet gefunden. Wo kann ich das ändern, dass die Bestätigungsmail an den Schreiber von einer mir gewählten E-Mail Adresse kommt?

In Contao? oder doch irgendwo im PHP Script?
 

Mereel

Aktives Mitglied

Das blöde ist nun, dass die Absender Adresse, welche ich von meinem Hoster bei Vertragsabschluss zugeteilt bekommen habe.
Was ist denn nun das blöde??

Wo kann ich das ändern, dass die Bestätigungsmail an den Schreiber von einer mir gewählten E-Mail Adresse kommt?
In Contao? oder doch irgendwo im PHP Script?
Ohne den Code, der deine E-Mail versendet, zu kennen, wird das schwierig. Wenn du die PHP mail() Funktion verwendest, schau dir mal die Bespiele hier an: http://php.net/manual/de/function.mail.php
Der Absender einer E-Mail wird im Header der Mail definiert.
 

Zaolat

Aktives Mitglied

Ja, mein Fehler: Das Blöde ist, dass die E-Mail Adresse eine zufällig generierte Zahlen- / Buchstabenkombination ist. Liest sich nicht schön.

Hier der Code der PHP Datei:

Code:
<?php
    $vorname = $_POST['vorname'];
    $nachname = $_POST['nachname'];
    $email = $_POST['email'];
    $nachricht = $_POST['nachricht'];

    if( !empty($vorname) && strlen($vorname) >=2 &&
        !empty($nachname) && strlen($nachname) >=2 &&
        !empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL)
       
){

    $an = 'rundy@online.de';
    $betreff = "Anfrage";
   
    $mailbody = "<strong>Name:</strong> $vorname $nachname<br>";
    $mailbody .= "<strong>E-Mail Adresse:</strong> $email<br>";
    $mailbody .= "<strong>Nachricht:</strong> <br>$nachricht <br>";
   
    $mailheader .= "MIME-Version: 1.0\r\n";
    $mailheader .= "Content-Type: text/html; charset=utf-8";

    $kdbetreff = "Dein Kontakt";
   
    $kdmailbody = "Vielen Dank für deine Kontaktaufnahme<br><br>";

    $mailfunktion = mail($an, $betreff, $mailbody, $mailheader);

    if( $mailfunktion ){
        header('Location: bestaetigung.html');
        $an = $email;
        $mailfunktion = mail($an, $absender, $kdbetreff, $kdmailbody, $mailheader);

    }else{
        header('Location: fehler-bestaetigung.html');

    }
    }
?>

Habe mir deinen Link angeschaut und das versucht, jedoch wurde dadurch die Mail nicht mehr in html dargestellt und im Feld des Absenders wurden auch die Variablen $mailheader mit angezeigt
 

Mereel

Aktives Mitglied

Folgendes funktioniert nicht?
PHP:
// ...
$mailheader = "MIME-Version: 1.0\r\n";
$mailheader .= "Content-Type: text/html; charset=utf-8" . "\r\n";
$mailheader .= "From: absender@example.com";
// ...
 

Mereel

Aktives Mitglied

Keine Ahnung, kann ich mir dann auch nicht erklären. Wie soll denn $mailheader in den Absender kommen!? Sicher, dass du nicht irgendwo einen Tippfehler im Code hast?
 

Zaolat

Aktives Mitglied

OK, ich schau mal, ob ich da was finde. Danke.

Mir ist nun ein weiterer Fehler aufgefallen bezüglich des Formulars. In Chrome funktioniert das alles einwandfrei mit der Weiterleitung auf die bestaetigung.html.

In Opera und Firefox jedoch nicht. Da wird zwar die Mail mit den Daten verschickt, jedoch bleibt die Seite auf der .php Seite. Soweit ich nun bisher gelesen habe liegt es wohl daran, dass ich in der unteren IF Anweisung vor der Header funktion noch HTML Angaben habe.
Mich wundert nur, warum es in Chrome einwandfrei funktioniert? Und gibt es Alternativen, um die Mail in html Format zu versenden und dennoch in Opera /Firefox eine Weiterleitung zu programmieren?
 

Mereel

Aktives Mitglied

Ich bin mir ziemlich sicher, dass die nicht-funktionierende Weiterleitung absolut nichts mit dem Versenden der HTML-Email zu tun hat.
Du darfst nur keinen Content an den Client ausgeben (z.B. mit echo), bevor du die Header-Angaben mit header() machst. Mit dem Versenden von HTML-Mails hat das gar nichts zu tun. Außerdem würde in dem Fall eine Fehlermeldung ausgegeben werden ("Headers already sent" oder so ähnlich) und nicht einfach auf die Weiterleitung verzichtet.
Im Location-Header sollten eigentlich nur absolute URLs verwendet werden (also z.B. ""). Ich würde eher mal vermuten, dass das Problem hier liegt (das würde auch erklären, warum es in machen Browsern geht und in machen nicht).
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.633
Beiträge
1.538.446
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben