Seite 4 von 11

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 16:50
von Volker
Poste das Script hier mit der Code Option <>

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 16:52
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

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 16:54
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;
    }
}
?>

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:03
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 !

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:08
von dettec61
Ja, einmal nicht aufgepasst. Passwort geändert...

Ohne das $_POST ?

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:08
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

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:12
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);
 }
}
?>

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:12
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

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:16
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:

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:18
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"] . "

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:18
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

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:19
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"]);

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:24
von Volker

Code: Alles auswählen

_POST["name"]);
Wo soll der denn herkommen ?

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:25
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);
 }
}
?>

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:26
von dettec61
Oh Mann, was mach ich euch eine Arbeit..... :eek:

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:27
von Volker
Detlev hat nachname und vorname die er abfragt. Die Variable aber nur name.

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:28
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.

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:31
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).

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:41
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...

Re: Kontaktformular mit Bestätigungsmail?

Verfasst: Sa 1. Mär 2025, 17:56
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.