Mailscript funtioniert nicht mehr

PHP, CSS und JavaScript lernen. Anwendungen für Webseiten
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5826
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Tommy Herrmann »

Hubert,

unten mal der Code, den ich gerade eben an Werners Formular-Generator für Dich generiert habe:

https://werner-zenk.de/tools/formulargenerator.php

Dort kannst Du dann auch Deine E-Mail-Adresse an der Variable $Mailto eintragen, hier:

Quellcode hat geschrieben: // Empfänger E-Mail
// Hier muss beim Provider eine bekannte E-Mail-Adresse eingetragen sein, weil "externe" E-Mail-Adressen vom
// Provider gesperrt werden und dies zur Ablehnung der Versendung der E-Mail durch den Provider führt.
$Mailto = "name@example.com";

Code: Alles auswählen

<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title></title>

  <!-- Den Dateipfad zu Bootstrap eventuell anpassen! -->
  <link rel="stylesheet" href="bootstrap.min.css">

  <style>
  body, textarea {
   font-family: Verdana, Sans-Serif;
   font-size: 1rem;
  }

  span.pflichtfeld {
   font-size: 0.90rem;
   color: Red;
  }

  span.hilfetext {
   font-family: Arial, Tahoma, Sans-Serif;
   font-size: 0.80rem;
   font-style: Oblique;
   color: #009500;
  }
  </style>

 </head>
<body>

<?php
/*
   Aktion: Formulardaten als E-Mail versenden.
   Formular - PHP 5.4+, Zeichenkodierung: UTF-8
   Siehe: https://werner-zenk.de/html/schriftzeichen_richtig_darstellen.php

   Erstellt mit dem Formular Generator (13.02.2024) - 
   https://werner-zenk.de/tools/formulargenerator.php

   Bitte testen Sie das Formular ausführlich und
   beachten Sie die Hinweise im Quelltext!
*/

// PHP Fehlermeldungen (1 um das Formular zu testen) anzeigen.
error_reporting(1); // (0/1)

// Weiterleitung - Nach dem absenden des Formulars,
// gelangt der Benutzer über einen Link auf folgende Seite:
$Weiterleitung = "index.php"; // Relativer Pfad, ausgehend vom Formular.

// Automatische Weiterleitung
$Autoweiterleitung = 6; // Zeit in Sekunden

// Floodsperre - Innerhalb der Zeitspanne kann das Formular
// vom selben Benutzer nicht mehrmals gesendet werden.
$Floodsperrzeit = 60; // Sperrzeit in Sekunden

// Datei in der die IP und die Zeit gespeichert werden sollen.
$Flooddatei = "floodsperre.txt"; // Die Datei benötigt Leserechte!
// Herunterladen: https://werner-zenk.de/tools/scripts/fileload.php?datei=floodsperre.txt

$name = isset($_POST["name"]) ? htmlspecialchars(trim($_POST["name"])) : ""; // Name
$email = isset($_POST["email"]) ? htmlspecialchars(trim($_POST["email"])) : ""; // E-Mail
$betreff = isset($_POST["betreff"]) ? htmlspecialchars(trim($_POST["betreff"])) : ""; // Betreff
$nachricht = isset($_POST["nachricht"]) ? htmlspecialchars(trim($_POST["nachricht"])) : ""; // Nachricht

// Floodsperre - IP und Zeit überprüfen
if (file_exists($Flooddatei) && is_readable($Flooddatei)) {
 foreach (file($Flooddatei) as $element) {
  list($Ip, $Zeit) = explode("|", $element);
  if ($Ip == $_SERVER["REMOTE_ADDR"]) {
   if ((floor((time() - $Zeit))) < $Floodsperrzeit) {
    // Meldung und Link ausgeben
    exit("<p>Ihre Nachricht wurde bereits versandt!<br>" .
    "<a href='" . $Weiterleitung . "'>Weiter</a></p>");
   }
  }
 }
}

// Benutzereingaben überprüfen
// Die Meldungen müssen hier eventuell angepasst werden.
$Fehler = ["name"=>"", "email"=>"", "betreff"=>"", "nachricht"=>"", "sicherheit"=>""];
if (isset($_POST["submit"])) {
 $Fehler["name"] = strlen($_POST["name"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["name"] .= !ctype_alpha($_POST["name"]) ? " Geben Sie nur Buchstaben ein!" : ""; // Buchstaben ohne Leerzeichen!
 $Fehler["email"] = filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false ? " Geben Sie eine gültige E-Mail-Adresse ein!" : "";
 $Fehler["betreff"] = strlen($_POST["betreff"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
 $Fehler["betreff"] .= !ctype_alpha($_POST["betreff"]) ? " Geben Sie nur Buchstaben ein!" : ""; // Buchstaben ohne Leerzeichen!
 $Fehler["nachricht"] = strlen($_POST["nachricht"]) < 10 ? " Bitte füllen Sie dieses Feld aus (min. 10 Zeichen)!" : "";
 $Fehler["nachricht"] .= strlen($_POST["nachricht"]) > 5000 ? " Es sind maximal 5000 Zeichen erlaubt!" : "";
 $Fehler["sicherheit"] = (md5($_POST["zip"]) != $_POST["zip2"]) ? "Die Sicherheitsabfrage ist leider falsch!" : "";
}

// Sicherheitsabfrage -  Buchstaben
$Zufall = range("a", "z"); shuffle($Zufall);
$Zufall = substr(implode("", $Zufall), rand(1, 22), 4);
$Ergebnis = md5($Zufall);
$Zufall = substr($Zufall, 0, 2) . "&nbsp;" . substr($Zufall, 2, 2);

// Formular erstellen
$Formular = "
<form action='" . $_SERVER["SCRIPT_NAME"] . "' method='post'>

<p>
 <label> Name:
<span class='pflichtfeld'>&#10034; " . $Fehler["name"] . "</span><br>
  <input type='text' name='name' value='" . $name . "' size='35' required='required' class='form-control' tabindex='1'>
 </label>
</p>

<p>
 <label> E-Mail:
<span class='pflichtfeld'>&#10034; " . $Fehler["email"] . "</span><br>
  <input type='email' name='email' value='" . $email . "' size='35' required='required' class='form-control' tabindex='2'>
 </label>
</p>

<p>
 <label> Betreff:
<span class='pflichtfeld'>&#10034; " . $Fehler["betreff"] . "</span><br>
  <input type='text' name='betreff' value='" . $betreff . "' size='35' required='required' class='form-control' tabindex='3'>
 </label>
</p>

<p>
 <label> Nachricht:
 <span class='pflichtfeld'>&#10034; " . $Fehler["nachricht"] . "</span><br>
 <textarea name='nachricht' cols='40' rows='8' placeholder='min. 10 bis max. 5000 Zeichen' maxlength='5000' required='required' class='form-control' tabindex='4'>" . $nachricht . "</textarea>
 </label>
</p>

<p>
 <label> Sicherheitsabfrage: 
 <span class='pflichtfeld'>&#10034; " . $Fehler["sicherheit"] . "</span><br>
 <em><big>" . $Zufall . "</big></em> = 
 <input type='text' name='zip' size='4' required='required' autocomplete='off'>
 </label>
 <input type='hidden' name='zip2' value='" . $Ergebnis . "'>
 <br><span class='hilfetext'> Buchstaben <b>ohne Leerzeichen</b> eintragen. </span><br>
</p>

<p>
 <br>
 <input type='submit' name='submit' value='Senden' class='btn' tabindex='5'>
</p>

<p>
 <small>Bitte alle mit <span class='pflichtfeld'>&#10034;</span>
 markierten Felder ausfüllen.</small>
</p>

</form>
";

// Formular abgesendet
if (isset($_POST["submit"])) {

 // Sind keine Benutzer-Eingabefehler vorhanden
 if (implode("", $Fehler) == "") {

  // Floodsperre - IP und Zeit speichern
  if (file_exists($Flooddatei) && is_writeable($Flooddatei)) {
   $Array = array_slice(file($Flooddatei), -10);
   $Fh = fopen($Flooddatei, "w+");
   fputs($Fh, implode("", $Array) . $_SERVER["REMOTE_ADDR"] . "|" . time() . "|\n");
   fclose($Fh);
  }

  // Daten als E-Mail versenden (Vorschlag) - Bitte anpassen!

  // Zeitzone und das aktuelle Datum setzen
  // http://de3.php.net/manual/de/timezones.europe.php
  date_default_timezone_set("Europe/Berlin");
  $Datum = date("d.m.Y H:i");

  // Protokollieren
  $Ip = $_SERVER["REMOTE_ADDR"];

  // Empfänger E-Mail
  // Hier muss beim Provider eine bekannte E-Mail-Adresse eingetragen sein, weil "externe" E-Mail-Adressen vom
  // Provider gesperrt werden und dies zur Ablehnung der Versendung der E-Mail durch den Provider führt.
  $Mailto = "name@example.com";

  // Inhalt der E-Mail setzen
  $Text = "   Gesendet am: $Datum Uhr
   Name: $name
   E-Mail: $email
   Betreff: $betreff
   Nachricht: $nachricht

   IP: $Ip
  ";

  // E-Mail versenden
  mb_language("de");
  mb_internal_encoding("UTF-8");
  $Betreff = mb_encode_mimeheader($betreff, "UTF-8", "Q");
  $Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($name, "UTF-8", "Q") .
   "<" . $Mailto . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";

  if (mail($Mailto, $Betreff, $Text, $Kopfzeile)) {

   echo "<p>Vielen Dank, die Nachricht wurde versendet.</p>";
  }
  else {

   // Wenn die Daten nicht versendet werden konnten,
   // wird die E-Mail-Adresse für den direkten Kontakt eingeblendet.
   echo "<p>Beim Senden der Nachricht ist ein Fehler aufgetreten!<br>" . 
   "Bitte wenden Sie sich direkt an: <a href='mailto:" . $Mailto . "'>" . $Mailto . "</a></p>";
  }

  // Automatische Weiterleitung
  echo "<script>window.setTimeout('location.href=\"" . $Weiterleitung . "\"', " . $Autoweiterleitung . "*1000);</script>
  <noscript><meta http-equiv='refresh' content='" . $Autoweiterleitung . "; URL=" . $Weiterleitung . "'></noscript>
  <p>Automatische Weiterleitung in " . $Autoweiterleitung . " Sekunden &hellip;<br>
   <a href='" . $Weiterleitung . "' target='_top'>Weiter</a></p>";
 }
 else {

  // Formular und Benutzer-Eingabefehler ausgeben
  echo $Formular;
 }
}
else {

 // Formular ausgeben
 echo $Formular;
}
?>

</body>
</html>/code]
Benutzeravatar
Bushisan
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 66
Registriert: So 13. Dez 2020, 21:23
Wohnort: Neukirchen bei Sulzbach-Rosenberg
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Bushisan »

Alles klar - ich versuchs - DANKE :)
Es kann nur einen geben - warum bin ich das nicht?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5826
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Tommy Herrmann »

Ich habe soeben den Quelltext nochmals geändert (ohne Erfolgsseite "danke.html").

Ich habe vorhin auch mal an Werner geschrieben, das kommt mir sehr merkwürdig vor :eek:
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Werner-Zenk.de »

Im Zuge meiner Aufräumarbeiten wurde der Generator anscheinend beschädigt.
Diesen wollte ich sowieso dieses Jahr einstellen, entweder den Generator bei Tommy benutzen oder meinen anderen Generator.
Benutzeravatar
Bushisan
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 66
Registriert: So 13. Dez 2020, 21:23
Wohnort: Neukirchen bei Sulzbach-Rosenberg
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Bushisan »

Hallo Werner,

Danke für die Info - ich versuchs ma :)

Gruß Hubert
Es kann nur einen geben - warum bin ich das nicht?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5826
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Tommy Herrmann »

Moin,

@Werner,

das ist aber sehr schade, dass Du den alten "Formular-Generator" eingestellt hast :crying:

Der hat doch ungleich mehr Optionen als der neue Generator, man kann zum Beispiel keine Kopie an den Absender senden, was sehr gerne verwendet wurde.

Die Verwendung vom PHPMailer ist ja nun auch nicht jedermanns Sache - schon deswegen, weil man als "Normalmensch" die Scripts vom PHPMailer überhaupt nicht versteht.

Hat das denn einen bestimmten Grund, dass Du den alten "Formular-Generator" nicht mehr verwenden willst?


@Hubi,

Du kannst natürlich den neuen Kontaktformular-Generator vom Werner ebenso verwenden, der Einbau ist fast gleich, nur muss man u.a. die Skripte vom PHPMailer noch zusätzlich in das angegebene Verzeichnis kopieren und den PHP-Teil an anderer Stelle in Mobirise einbauen.

Der große Vorteil ist natürlich, dass Du oben am Zahnrad ⚙️ bei den Formular-Optionen auch "SMTP" zur Verwendung anhaken kannst. Dann kannst Du dort die Zugangsdaten von Deinem Provider (mit Passwort) eintragen und dann bist Du den Spammer in jedem Fall los.

Code: Alles auswählen

  // SMTP - Servereinstellungen (Beispiel, Provider: 1&1/Ionos)
  // $mail->SMTPDebug = true; // Ausführliche Debugausgabe aktivieren
  $mail->isSMTP(); // Senden mit SMTP
  $mail->Host = "smtp.ionos.de"; // Postausgangsserver (SMTP)
  $mail->SMTPAuth = true; // SMTP-Authentifizierung aktivieren
  $mail->Username = "mail@example.com"; // SMTP Benutzername
  $mail->Password = "**********"; // SMTP Passwort
  $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Implizite TLS-Verschlüsselung aktivieren
  $mail->Port = 465; // Port - Postausgangsserver (SMTP)


… oder Du verwendest den alten Formular-Generator vom Werner auf meiner Seite, dann kannst Du das ganz genauso machen wie vorher.

Ob das Buchstabenrätsel von den Spammern auch geknackt werden kann, kann ich noch nicht beurteilen. Die "Floodsperre" sollte aber in jedem Fall ein erneutes Sperren Deiner E-Mail durch den Provider verhindern und das Formular auch uninteressant für den Spammer machen.
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Werner-Zenk.de »

Tommy Herrmann hat geschrieben: Mi 14. Feb 2024, 05:19 Hat das denn einen bestimmten Grund, dass Du den alten "Formular-Generator" nicht mehr verwenden willst?
Moin Tommy,

ich habe in den letzten Jahren umfangreich Statistiken zum Formular Generator erstellt,
95% der Benutzer erstellen dabei "nur" ein Kontakt-Formular.

Die Einstellungen im Formular Generator sind häufig und schwierig und es kommt oft zu Fehlern in der Bedienung. Das sieht man auch hier im Forum, nur Probleme, die sich Aufgrund der falschen Benutzung des Generators herausstellen.

Ich habe den Formular Generator geschrieben, um Fragen oder Probleme mit einem Formular aus dem Weg zu gehen, nicht um neue Probleme zu schaffen.

Persönlich ist mir das egal, ob der Generator online ist, ich erstelle so ein Formular individuell und je nach Anforderung passend.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5826
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Tommy Herrmann »

Moin, Moin,

na ja - das ist natürlich immer so und klar, dass es bei jeder Anwendung immer Probleme geben wird.

Das kann man nicht verhindern, denn alle die auf solche Hilfen zurückgreifen müssen, können es eben nicht alleine.

Deswegen habe ich ja auch meine Tutorial-Seite, die nichts anderes versucht als den Leuten den Einbau in Mobirise zu erleichtern.

Dennoch habe ich erstaunlich wenig Nachfragen gehabt. Immerhin habe ich den Generator schon seit dem Jahr 2016 und über 10.000 Aufrufe gehabt, mal abgesehen davon, dass der Generator auf Deiner Seite sicher noch weitaus mehr genutzt wurde.

Vielleicht hatte ich ein Dutzend Nachfragen in der gesamten Zeit.

Das finde ich schon fast sensationell wenig.
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Werner-Zenk.de »

Wenigstens muss ich hier keine Fragen zum Generator mehr beantworten, wenn irgendwelche Bedienungsfehler oder andere PHP-Probleme erscheinen :cool:
Klaus
Supporter
Supporter
Beiträge: 443
Registriert: Mi 21. Jul 2021, 00:43

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Klaus »

Öhm, brauch ich ne neue Brille oder hat der "neue Generator" gar kein Spamschutz mehr?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5826
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Tommy Herrmann »

Moin,

das ist das was ich meinte - man versteht den "PHPMailer" nicht so ohne weiteres und gleich. Dort ist wohl ein automatischer Spamschutz gegen Bots mit integriert? Ich weiß es aber nicht. Werner hatte das an anderer Stelle mit einem "Honeypot" (Fake-Feld) als Spamschutz gelöst.

https://github.com/PHPMailer/PHPMailer


Werner, bitte auf keine Fall als Kritik verstehen - das ist nur ein Hinweis und man will und muss ja auch selbst verstehen, was man da verwendet. Damit habe ich beim "PHPMailer" aber ein Problem. Den vom alten Generator generierten Code konnte man mit etwas Fleiß aber schon sehr gut verstehen.

Wir sind alle dankbar, dass es diese Tools auf Deinen Seiten gibt und benötigen sie auch dringend.

Womit ich echt ein Problem habe ist, dass dieser Generator nach einem zweiten Aufruf immer alle Felder 3 x anzeigt:

https://werner-zenk.de/tools/form.php


Kontaktformular-Generator gleich 3 Mal.png


... sodass der Quellcode dann auch falsch (mehrfach) generiert wird:

Code: Alles auswählen

<?php
/*
 *  Formular - Erstellt mit dem
 * Kontaktformular Generator (15.02.2024)
 * https://werner-zenk.de/tools/form.php
 */

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

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

// Absender und Empfänger - E-Mail-Adresse
// Hier muss beim Provider eine bekannte E-Mail-Adresse eingetragen sein, weil "externe" 
// E-Mail-Adressen vom Provider gesperrt werden (SPF) und dies zu einer Ablehnung führt.
$empfaengerName = ""; // Name des Empfängers
$empfaengerEmail = ""; // E-Mail des Empfängers

// Formular abgesendet
if ($_SERVER["REQUEST_METHOD"] == "POST") {

 // Benutzereingaben überprüfen
 $fehler = ["name"=>"", "betreff"=>"", "mail"=>"", "nachricht"=>"", "name"=>"", 
  "betreff"=>"", "mail"=>"", "nachricht"=>"", ];

 // Benutzer-Eingabefehler eventuell anpassen
 $fehler["name"] = strlen($_POST["name"]) < 1 ? "Bitte dieses Feld ausfüllen!" : "";
 $fehler["betreff"] = strlen($_POST["betreff"]) < 10 ? "Bitte dieses Feld ausfüllen!" : "";
 $fehler["mail"] = strlen($_POST["mail"]) < 5 ? "Bitte dieses Feld ausfüllen!" : "";
 $fehler["nachricht"] = strlen($_POST["nachricht"]) < 25 ? "Bitte dieses Feld ausfüllen!" : "";
 $fehler["name"] = strlen($_POST["name"]) < 1 ? "Bitte dieses Feld ausfüllen!" : "";
 $fehler["betreff"] = strlen($_POST["betreff"]) < 10 ? "Bitte dieses Feld ausfüllen!" : "";
 $fehler["mail"] = strlen($_POST["mail"]) < 5 ? "Bitte dieses Feld ausfüllen!" : "";
 $fehler["nachricht"] = strlen($_POST["nachricht"]) < 25 ? "Bitte dieses Feld ausfüllen!" : "";

 // Benutzer-Eingabefehler vorhanden
 if (strlen(implode($fehler)) > 0) {
  echo json_encode($fehler);
  exit;
 }
 else {

  // Zeitzone und das aktuelle Datum setzen
  $jetzt = date_create("now", timezone_open("Europe/Berlin"));
  $datum = date_format($jetzt, "d.m.Y - H:i");

  // Inhalt der E-Mail setzen
  $text = "Gesendet am: $datum Uhr
   Name: " . $_POST["name"] . "
   Betreff: " . $_POST["betreff"] . "
   E-Mail: " . $_POST["mail"] . "
   Nachricht: " . $_POST["nachricht"] . "
   Name: " . $_POST["name"] . "
   Betreff: " . $_POST["betreff"] . "
   E-Mail: " . $_POST["mail"] . "
   Nachricht: " . $_POST["nachricht"] . "
  ";

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

  // Absender, Empfänger und Antwort setzen
  $mail->setFrom($empfaengerEmail, $empfaengerName);
  $mail->addAddress($empfaengerEmail, $empfaengerName);
  $mail->addReplyTo($_POST["mail"], $_POST["name"]);

  // Betreff und Body setzen
  $mail->Subject = $_POST["betreff"];
  $mail->Body = $text;

  // E-Mail versenden
  if ($mail->Send()) {
   echo "OK";
  }
  else {
   echo "KO";
  }
 }
 exit;
}
?>

<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Kontakt</title>

  <style>
  body {
   font-family: Verdana, Arial, Sans-Serif;
   font-size: 1em;
  }

  /* Formular */
  form#kontaktform {
   width: 300px;
   color: #000000;
   background-color: #F5F5F5;
   padding: 15px;
  }

  /* Überschrift */
  h3 {
   font-size: 1.25em;
   font-weight: Normal;
   letter-spacing: 1px;
   margin-top: 0;
  }

  /* Focus */
  :focus-visible {
   outline: Solid 1px Royalblue;
  }

  /* Pflichtangaben markieren */
  var, noscript {
   color: Red;
  }
  </style>

  <script>
  window.addEventListener("DOMContentLoaded", function() {

   document.getElementById("senden").addEventListener("click", function () {

   if (document.getElementById("kontaktform").reportValidity()) {

    fetch(document.URL, {
     method: "post",
     body: new FormData(document.getElementById("kontaktform"))
    })
    .then((response) => {
     return response.text();
    })
    .then((text) => {

      if (text == "OK") {

         // Die Nachrichten eventuell anpassen!
         document.getElementById("kontaktform").innerHTML =
        `<p>Vielen Dank, die Nachricht wurde gesendet.</p>`;
      }
      else if (text == "KO") {

         document.getElementById("kontaktform").innerHTML =
        `<p>Die Nachricht konnte leider nicht gesendet werden!</p>`;
      }
      else {

       var objekt = JSON.parse(text);
       document.getElementById("name").innerHTML = objekt.name;
       document.getElementById("betreff").innerHTML = objekt.betreff;
       document.getElementById("mail").innerHTML = objekt.mail;
       document.getElementById("nachricht").innerHTML = objekt.nachricht;
       document.getElementById("name").innerHTML = objekt.name;
       document.getElementById("betreff").innerHTML = objekt.betreff;
       document.getElementById("mail").innerHTML = objekt.mail;
       document.getElementById("nachricht").innerHTML = objekt.nachricht;
      }
     });
    }
   });
  });
  </script>

 </head>
<body>

<form id="kontaktform">

<h3>Kontakt</h3>

<noscript>Um eine Nachricht senden zu können, muss JavaScript im Browser aktiviert sein!</noscript>

 <p>
  <label>Name:
  <var id="name">✲</var><br>
   <input type="text" name="name" size="25" minlength="1" required="required">
  </label>
 </p>

 <p>
  <label>Betreff:
  <var id="betreff">✲</var><br>
   <input type="text" name="betreff" size="30" minlength="10" required="required">
  </label>
 </p>

 <p>
  <label>E-Mail:
  <var id="mail">✲</var><br>
   <input type="email" name="mail" size="25" minlength="5" required="required">
  </label>
 </p>

 <p>
  <label>Nachricht: <var id="nachricht">✲</var><br>
   <textarea name="nachricht" rows="8" cols="30" minlength="25" required="required"></textarea>
  </label>
 </p>

 <p>
  <label>Name:
  <var id="name">✲</var><br>
   <input type="text" name="name" size="25" minlength="1" required="required">
  </label>
 </p>

 <p>
  <label>Betreff:
  <var id="betreff">✲</var><br>
   <input type="text" name="betreff" size="30" minlength="10" required="required">
  </label>
 </p>

 <p>
  <label>E-Mail:
  <var id="mail">✲</var><br>
   <input type="email" name="mail" size="25" minlength="5" required="required">
  </label>
 </p>

 <p>
  <label>Nachricht: <var id="nachricht">✲</var><br>
   <textarea name="nachricht" rows="8" cols="30" minlength="25" required="required"></textarea>
  </label>
 </p>

 <p>
  <button type="button" id="senden">Absenden</button>
 </p>

</form>

</body>
</html>

Das geht auch nur wieder weg, wenn man die Browsersitzung schließt oder das Formular am Papierkorb 🗑️ gänzlich löscht.

Weiterhin kann ich kein einziges Feld einzeln am ❌ löschen, auch nicht mittels Doppelklick und in keinem Browser. Mache ich einen Fehler, muss ich von vorne beginnen, was bei großen Formularen schon eine beträchtliche Arbeit sein kann.

… auch dass der Code in einem Stück generiert wird, obwohl man den PHP-Teil extra als Datei "kontakt.php" speichern soll und dann das JavaScript bei fetch(document.URL, { entsprechend im HTML-Teil anpassen muss, werden nur wenige Laien verstehen und genau die sind ja Zielgruppe für solche Tools.

Beim alten Generator wurden auch die Benutzer-Einstellungen als Cookies gespeichert, sodass ich später an meinem Formular weiter arbeiten konnte, falls ich z.B. etwas vergessen hatte, wie ein Eingabefeld oder ein solches als Pflichtfeld zu deklarieren oder eine andere Kleinigkeit. Das ist mir regelmäßig passiert, denn es fällt einem später meist noch etwas ein.

Vielleicht bediene ich den neuen Generator aber auch noch falsch :confused:
Klaus
Supporter
Supporter
Beiträge: 443
Registriert: Mi 21. Jul 2021, 00:43

Re: Mailscript funtioniert nicht mehr

Ungelesener Beitrag von Klaus »

Ich hab's jetzt noch ein paar mal probiert, das Formular versendet auch brav aber von einem integrierten Spamschutz gegen automatisierte Bots konnte ich nix sehen.
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste