Kontaktformular mit Bestätigungsmail?

Allgemeine Fragen
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Volker »

Poste das Script hier mit der Code Option <>
Gruß Volker
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

Code: Alles auswählen

<?php
/*
 * mailscript.php versenden über SMTP
 * Version vom 21.07.2021
 * 
 * Erfolgreich getestet mit: PHPMailer Version: 6.5.0
 */

// PHPMailer einbinden
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require "PHPMailer-master/src/Exception.php";
require "PHPMailer-master/src/PHPMailer.php";
require "PHPMailer-master/src/SMTP.php";

// Danke und Fehlerseite
$dankeSeite = "danke.html"; // Danke - Seite, die Mail wurde erfolgreich versandt.
$fehlerSeite = "fehler.html"; // Fehler - Seite, falls die Mail nicht versandt werden konnte.

// Betreff
// Jede E-Mail benötigt einen Betreff, da jedoch im Formular kein
// entsprechendes Feld gesetzt wurde, wird ein fester Betreff hinzugefügt.
$betreffEmail = "Kontaktformular Homepage KTC";


// Wurden POST-Daten gesendet?
if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // Zeitzone und das aktuelle Datum setzen
  date_default_timezone_set("Europe/Berlin");
  $datum = date("d.m.Y H:i");

  // HTML-Tags entfernen
  $_POST = array_map('strip_tags', $_POST);

  // Inhalt der E-Mail setzen
  $inhaltEmail = "Gesendet am: $datum Uhr
   Vorname: " . $_POST["vorname"] . "
   Nachname: " . $_POST["nachname"] . "
   E-Mail: " . $_POST["email1"] . "
   Phone: " . $_POST["phone"] . "

   Nachricht: " . $_POST["textarea"] . "
  ";

  // Instanz und Zeichenkodierung setzen
  $mail = new PHPMailer();
  $mail->CharSet = "UTF-8";

  // Servereinstellungen
  $mail->isSMTP(); // Senden mit SMTP
  $mail->Host = "send.one.com"; // Postausgangsserver (SMTP)
  $mail->SMTPAuth = true; // SMTP-Authentifizierung aktivieren
  $mail->Username = "webmaster@kreuztalertanzclub-casino.de"; // SMTP Benutzername
  $mail->Password = "xxxxxxxx"; // SMTP Passwort
  $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Implizite TLS-Verschlüsselung aktivieren
  $mail->Port = 465; // Port - Postausgangsserver (SMTP)

 // Absender und Empfänger
 $mail->setFrom("webmaster@kreuztalertanzclub-casino.de", "Info KTC"); // Absender
 $mail->addAddress("webmaster@kreuztalertanzclub-casino.de", "Info KTC"); // Empfänger
 
  // Der Absender bekommt eine Kopie
 $mail->addCC($_POST["email1"]); // Falls BCC gewünscht: $mail->addBCC($_POST["email1"]);

 // "Antworten an" den Absender der Nachricht setzen
 $mail->addReplyTo($_POST["email1"], $_POST["name"]);
 
  // Betreff und Body setzen
  $mail->Subject = $betreffEmail;
  $mail->Body = $inhaltEmail;

 // E-Mail versenden
 if ($mail->Send()) {
  header("Location: " . $dankeSeite);
 }
 else {
  header("Location: " . $fehlerSeite);
 }
}
?>
Passwort entfernt von Volker
Grüssle
Detlev
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Volker »

Warum ich nicht SMTP verwende sondern den PHP Mail Befehl ist einfach zu erklären.

Ich kann schlecht von Kunden verlangen das sie mir ihr Passwort für Ihre Mailaccounts geben - macht man ja auch nicht, sowas ;)

Das Script ist durch den PHP Mailer auch schon so ziemlich sicher, solange keiner das mailscript.php zu sehen bekommt.

Hier mein Script welches gerade läuft:

Code: Alles auswählen

<?php

/*
 * mailscript.php
 * Version überarbeitet mit Absender-Kopie
 */

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require __DIR__ . '/PHPMailer-master/src/Exception.php';
require __DIR__ . '/PHPMailer-master/src/PHPMailer.php';

session_start(); // Session starten für Danke-Seite

// Empfänger-Daten
$empfaengerName = "Volker";
$empfaengerEmail = "volker@niederastroth.de";
$dankeSeite = "danke.php";
$fehlerSeite = "fehler.html";
$betreffEmail = "Kontaktformular Homepage";

// Wurden POST-Daten gesendet?
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    // Zeitzone setzen
    date_default_timezone_set("Europe/Berlin");
    $datum = date("d.m.Y H:i");

    // Eingaben bereinigen
    $name = htmlspecialchars(strip_tags($_POST["name"] ?? ""));
    $email = filter_var($_POST["email"] ?? "", FILTER_VALIDATE_EMAIL);
    $phone = htmlspecialchars(strip_tags($_POST["phone"] ?? ""));
    $message = htmlspecialchars(strip_tags($_POST["message"] ?? ""));

    if (!$email) {
        header("Location: " . $fehlerSeite);
        exit;
    }

    // Inhalt der E-Mail setzen
    $inhaltEmail = "Gesendet am: $datum Uhr
    Name: $name
    E-Mail: $email
    Phone: $phone
    Nachricht: $message
    ";

    // PHPMailer-Instanz
    $mail = new PHPMailer();
    $mail->CharSet = "UTF-8";

    // Fester Absender (damit es nicht blockiert wird)
    $mail->setFrom("no-reply@niederastroth.de", "Webseite Kontaktformular");
    $mail->addReplyTo($email, $name); // Antwort an den Absender ermöglichen

    // Empfänger setzen
    $mail->addAddress($empfaengerEmail, $empfaengerName);
	
	// "Antworten an" den Absender der Nachricht setzen
$mail->addReplyTo($email, $name);

    // Der Absender bekommt eine Kopie
    $mail->addCC($email); // Falls BCC gewünscht: $mail->addBCC($email);

    // Betreff und Nachricht setzen
    $mail->Subject = $betreffEmail;
    $mail->Body = $inhaltEmail;

    // E-Mail versenden
    if ($mail->send()) {
        // Daten für die Danke-Seite speichern
        $_SESSION['name'] = $name;
        $_SESSION['email'] = $email;
        $_SESSION['phone'] = $phone;
        $_SESSION['message'] = $message;

        header("Location: " . $dankeSeite);
        exit;
    } else {
        error_log("Mail-Fehler: " . $mail->ErrorInfo);
        header("Location: " . $fehlerSeite);
        exit;
    }
}
?>
Gruß Volker
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Volker »

Fehler in der Klammer

$mail->addCC($_POST["email1"])

muss

$mail->addCC($email1);

heissen

Das hier :
// Der Absender bekommt eine Kopie
$mail->addCC($email); // Falls BCC gewünscht: $mail->addBCC($email);

ist bei jedem mailscript gleich und sollte auch so belassen werden !
Gruß Volker
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

Ja, einmal nicht aufgepasst. Passwort geändert...

Ohne das $_POST ?
Grüssle
Detlev
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Tommy Herrmann »

Volker,

das ist kein Fehler in der Klammer. Er verwendet doch die POST-Variable.

Ich kann heute leider nicht, weil ich Besuch habe.

Detlev,

hast Du denn das Skript, so wie Du es gerade hier eingestellt hast, auch schon getestet? Geht das oder nicht? Bei mir geht es doch genau so auch.

Hier könnt ihr das testen und auch eine Kopie erhalten:

https://www.mobirise-tutorials.com/Kont ... p#Formular
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

Warning: Undefined variable $email1 in /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php on line 66 Warning: Undefined array key "name" in /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php on line 69 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php:66) in /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php on line 77

Code: Alles auswählen

<?php
/*
 * mailscript.php versenden über SMTP
 * Version vom 21.07.2021
 * 
 * Erfolgreich getestet mit: PHPMailer Version: 6.5.0
 */

// PHPMailer einbinden
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require "PHPMailer-master/src/Exception.php";
require "PHPMailer-master/src/PHPMailer.php";
require "PHPMailer-master/src/SMTP.php";

// Danke und Fehlerseite
$dankeSeite = "danke.html"; // Danke - Seite, die Mail wurde erfolgreich versandt.
$fehlerSeite = "fehler.html"; // Fehler - Seite, falls die Mail nicht versandt werden konnte.

// Betreff
// Jede E-Mail benötigt einen Betreff, da jedoch im Formular kein
// entsprechendes Feld gesetzt wurde, wird ein fester Betreff hinzugefügt.
$betreffEmail = "Kontaktformular Homepage KTC";


// Wurden POST-Daten gesendet?
if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // Zeitzone und das aktuelle Datum setzen
  date_default_timezone_set("Europe/Berlin");
  $datum = date("d.m.Y H:i");

  // HTML-Tags entfernen
  $_POST = array_map('strip_tags', $_POST);

  // Inhalt der E-Mail setzen
  $inhaltEmail = "Gesendet am: $datum Uhr
   Vorname: " . $_POST["vorname"] . "
   Nachname: " . $_POST["nachname"] . "
   E-Mail: " . $_POST["email1"] . "
   Phone: " . $_POST["phone"] . "

   Nachricht: " . $_POST["textarea"] . "
  ";

  // Instanz und Zeichenkodierung setzen
  $mail = new PHPMailer();
  $mail->CharSet = "UTF-8";

  // Servereinstellungen
  $mail->isSMTP(); // Senden mit SMTP
  $mail->Host = "send.one.com"; // Postausgangsserver (SMTP)
  $mail->SMTPAuth = true; // SMTP-Authentifizierung aktivieren
  $mail->Username = "webmaster@kreuztalertanzclub-casino.de"; // SMTP Benutzername
  $mail->Password = "xxxxxx"; // SMTP Passwort
  $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Implizite TLS-Verschlüsselung aktivieren
  $mail->Port = 465; // Port - Postausgangsserver (SMTP)

 // Absender und Empfänger
 $mail->setFrom("webmaster@kreuztalertanzclub-casino.de", "Info KTC"); // Absender
 $mail->addAddress("webmaster@kreuztalertanzclub-casino.de", "Info KTC"); // Empfänger
 
  // Der Absender bekommt eine Kopie
 $mail->addCC($email1); // Falls BCC gewünscht: $mail->addBCC($email);

 // "Antworten an" den Absender der Nachricht setzen
 $mail->addReplyTo($_POST["email1"], $_POST["name"]);
 
  // Betreff und Body setzen
  $mail->Subject = $betreffEmail;
  $mail->Body = $inhaltEmail;

 // E-Mail versenden
 if ($mail->Send()) {
  header("Location: " . $dankeSeite);
 }
 else {
  header("Location: " . $fehlerSeite);
 }
}
?>
Grüssle
Detlev
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Volker »

Tommy warum steht dann da :
Warning: Undefined variable $email in /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php on line 66
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Tommy Herrmann »

Weil Detlev jetzt das POST entfernt hat, wie Du ihm falsch geraten hast:

Code: Alles auswählen

// Der Absender bekommt eine Kopie
 $mail->addCC($email1); // Falls BCC gewünscht: $mail->addBCC($email);

 // "Antworten an" den Absender der Nachricht setzen
 $mail->addReplyTo($_POST["email1"], $_POST["name"]);
Ich kann erst morgen wieder helfen.


Hier hatte ich den Code für Detlev richtig geschrieben:
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Volker »

Detlev,

heißen die Formularfelder auch genau so wie im Mailscript angesprochen ?

Vorname: " . $_POST["vorname"] . "
Nachname: " . $_POST["nachname"] . "
E-Mail: " . $_POST["email1"] . "
Phone: " . $_POST["phone"] . "
Gruß Volker
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

Wie du aber siehst ist email1 eingetragen... Keine Ahnung....

Ja, die Felder heißen so und funktionieren ja auch ohne den Anhang mit der Kopie an Absender...
Aber ich schaue noch mal
Zuletzt geändert von dettec61 am Sa 1. Mär 2025, 17:19, insgesamt 1-mal geändert.
Grüssle
Detlev
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Tommy Herrmann »

so muss es heißen!!!

$_POST["email1"]

Steht doch dort.


Trage es doch wenigsten einmal so ein und teste es:

Code: Alles auswählen

 // Der Absender bekommt eine Kopie
 $mail->addCC($_POST["email1"]); // Falls BCC gewünscht: $mail->addBCC($_POST["email1"]);

 // "Antworten an" den Absender der Nachricht setzen
 $mail->addReplyTo($_POST["email1"], $_POST["nachname"]);
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Volker »

Code: Alles auswählen

_POST["name"]);
Wo soll der denn herkommen ?
Gruß Volker
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

Tommy Herrmann hat geschrieben: Sa 1. Mär 2025, 17:19 so muss es heißen!!!

$_POST["email1"]

Steht doch dort.


Trage es doch wenigsten einmal so ein und teste es:

Code: Alles auswählen

 // Der Absender bekommt eine Kopie
 $mail->addCC($_POST["email1"]); // Falls BCC gewünscht: $mail->addBCC($_POST["email1"]);

 // "Antworten an" den Absender der Nachricht setzen
 $mail->addReplyTo($_POST["email1"], $_POST["name"]);
Habe ich, Fehler:
Warning: Undefined array key "name" in /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php on line 75 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php:75) in /customers/e/c/6/kreuztalertanzclub-casino.de/httpd.www/mailscript2.php on line 83

Code:

Code: Alles auswählen

<?php
/*
 * mailscript.php versenden über SMTP
 * Version vom 21.07.2021
 * 
 * Erfolgreich getestet mit: PHPMailer Version: 6.5.0
 */

// PHPMailer einbinden
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require "PHPMailer-master/src/Exception.php";
require "PHPMailer-master/src/PHPMailer.php";
require "PHPMailer-master/src/SMTP.php";

// Danke und Fehlerseite
$dankeSeite = "danke.html"; // Danke - Seite, die Mail wurde erfolgreich versandt.
$fehlerSeite = "fehler.html"; // Fehler - Seite, falls die Mail nicht versandt werden konnte.

// Betreff
// Jede E-Mail benötigt einen Betreff, da jedoch im Formular kein
// entsprechendes Feld gesetzt wurde, wird ein fester Betreff hinzugefügt.
$betreffEmail = "Kontaktformular Homepage KTC";


// Wurden POST-Daten gesendet?
if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // Zeitzone und das aktuelle Datum setzen
  date_default_timezone_set("Europe/Berlin");
  $datum = date("d.m.Y H:i");

  // HTML-Tags entfernen
  $_POST = array_map('strip_tags', $_POST);

  // Inhalt der E-Mail setzen
  $inhaltEmail = "Gesendet am: $datum Uhr
   Vorname: " . $_POST["vorname"] . "
   Nachname: " . $_POST["nachname"] . "
   E-Mail: " . $_POST["email1"] . "
   Phone: " . $_POST["phone"] . "

   Nachricht: " . $_POST["textarea"] . "
  ";

  // Instanz und Zeichenkodierung setzen
  $mail = new PHPMailer();
  $mail->CharSet = "UTF-8";

  // Servereinstellungen
  $mail->isSMTP(); // Senden mit SMTP
  $mail->Host = "send.one.com"; // Postausgangsserver (SMTP)
  $mail->SMTPAuth = true; // SMTP-Authentifizierung aktivieren
  $mail->Username = "webmaster@kreuztalertanzclub-casino.de"; // SMTP Benutzername
  $mail->Password = "yyyyyyy"; // SMTP Passwort
  $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Implizite TLS-Verschlüsselung aktivieren
  $mail->Port = 465; // Port - Postausgangsserver (SMTP)

 // Absender und Empfänger
 $mail->setFrom("webmaster@kreuztalertanzclub-casino.de", "Info KTC"); // Absender
 $mail->addAddress("webmaster@kreuztalertanzclub-casino.de", "Info KTC"); // Empfänger
 
  // Der Absender bekommt eine Kopie
 // $mail->addCC($email1); // Falls BCC gewünscht: $mail->addBCC($email);

 // "Antworten an" den Absender der Nachricht setzen
 // $mail->addReplyTo($_POST["email1"], $_POST["name"]);
 
  // Der Absender bekommt eine Kopie
 $mail->addCC($_POST["email1"]); // Falls BCC gewünscht: $mail->addBCC($_POST["email1"]);

 // "Antworten an" den Absender der Nachricht setzen
 $mail->addReplyTo($_POST["email1"], $_POST["name"]);
  
  // Betreff und Body setzen
  $mail->Subject = $betreffEmail;
  $mail->Body = $inhaltEmail;

 // E-Mail versenden
 if ($mail->Send()) {
  header("Location: " . $dankeSeite);
 }
 else {
  header("Location: " . $fehlerSeite);
 }
}
?>
Grüssle
Detlev
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

Oh Mann, was mach ich euch eine Arbeit..... :eek:
Grüssle
Detlev
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Volker »

Detlev hat nachname und vorname die er abfragt. Die Variable aber nur name.
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Tommy Herrmann »

Ja, das muss dann "nachname" anstatt "name" heißen. Das ist doch logisch. Ich kann nicht ständig gucken was sich geändert hat.
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

Mit "nachname" gehts !!!

Sorry, für mich ist das leider nicht alles logisch... Sonst müsste ich ja nicht fragen. nachname war ja schon immer da (bei mir).
Grüssle
Detlev
Benutzeravatar
dettec61
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 255
Registriert: Di 30. Mär 2021, 09:41
Wohnort: Siegerland

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von dettec61 »

So,
aber nun nochmals vielen Dank :prost: euch beiden. Ich hoffe, das ich das jetzt endgültig hinbekomme. Werde aber an dem Testscript noch ein bisschen rumspielen... Nur um so ein paar Dinge zu verstehen...
Grüssle
Detlev
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular mit Bestätigungsmail?

Beitrag von Tommy Herrmann »

Ich bin schon eine ganze Weile nur am Handy.

Ich schreibe morgen nochmals ein paar Erklärungen dazu.

Auch zum Unterschied von Variablen und Post-Variablen.

Es ist sehr wichtig diese Einzelheiten zu verstehen, sonst sind Fehler unvermeidbar.
Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Amazon [Bot], Bing [Bot] und 4 Gäste