Kontaktformular - E-Mail mit PHPMailer und SMTP versenden

[Bildschirmfoto / Grafik]
 Berechnungen mit dem Datum

Manchmal möchte man die E-Mail vom Kontaktformular über dem PHPMailer und SMTP (Simple Mail Transfer Protocol) versenden. Oder der Provider bietet den versandt der E-Mails nur über SMTP an. Weil das aber nicht so einfach ist und bestimmte Einstellungen beachtet werden müssen, stelle ich hier beispielhaft ein PHP-Skript vor.

Die E-Mail-Adressen, "SMTP Benutzername" und "SMTP Passwort" müssen angepasst werden. Außerdem die Dateien: "danke.php" und "fehler.php".

Dieses Skript wurde erfolgreich beim Provider IONOS (1&1) und dem PHPMailer (6.5.0) getestet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
// PHP-Fehlermeldungen anzeigen
error_reporting(E_ALL);
ini_set('display_errors'true);

// PhpMailer-Klassen in den globalen Namespace importieren
use PHPMailer\PHPMailer\PHPMailer;
use 
PHPMailer\PHPMailer\SMTP;
use 
PHPMailer\PHPMailer\Exception;

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

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

    
$dankeSeite "danke.php"// Danke - Seite, die Mail wurde erfolgreich versandt (Eventuell anpassen).
    
$fehlerSeite "fehler.php"// Fehler - Seite, falls die Mail nicht versandt werden konnte.

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

    
// Servereinstellungen
    // $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)

    // Absender und Empfänger
    
$mail->setFrom("mail@example.com""John Doe"); // Absender
    
$mail->addAddress("jane@outlook.com""Jane Foo"); // Empfänger

    // Sonderzeichen in HTML-Codes umwandeln
    
$_POST array_map('htmlspecialchars'$_POST);

    
// Betreff
    
$mail->Subject $_POST["betreff"];

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

    
// Inhalt der E-Mail setzen
    
$mail->Body "Gesendet am: " $datum " Uhr
 Name: " $_POST["name"] . "
 Betreff: " $_POST["betreff"] . "
 E-Mail: " $_POST["mail"] . "

 Nachricht: " $_POST["nachricht"] . PHP_EOL;

    
// Senden
    
if ($mail->send()) {
        
header("Location: " $dankeSeite);
    } else {
        
header("Location: " $fehlerSeite);
    }
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title></title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <form method="post">

        <p><label>Name:<br>
            <input type="text" name="name" required="required"></label><br>
            <span class="hilfetext">Geben Sie hier Ihre Vor- und Nachnamen ein.</span>
        </p>

        <p><label>E-Mail:<br>
            <input type="mail" name="mail" required="required"></label><br>
            <span class="hilfetext">Geben Sie hier Ihre E-Mail-Adresse ein.</span>
        </p>

        <p><label>Betreff:<br>
            <input type="text" name="betreff" minlength="10" required="required"></label><br>
            <span class="hilfetext">Aus welchem Grund möchten Sie mit uns in Kontakt treten?</span>
        </p>

        <p><label>Nachricht:<br>
            <textarea name="nachricht" minlength="25" required="required"></textarea></label><br>
            <span class="hilfetext">Hier haben Sie Platz für die Nachricht.</span>
        </p>

        <p><button type="submit">Nachricht senden</button></p>

    </form>

</body>
</html>

kontaktformular_phpmailer_smtp.zip

Viel Spaß damit!

Siehe auch: IONOS E-Mail: Serverdaten für IMAP, POP3 und SMTP


Für die Software: Mobirise gibt es spezielle Scripte damit der versandt auch darüber funktioniert. Weitere Infos dazu finden Sie auf meiner Partnerseite - mobirise-tutorials.com unter:
Kontakt Formular von Mobirise mit einem eigenen Mail-Skript und Weiterleitung zur Erfolgsseite

Tipps

RSS-Feed selbst erstellen
Ein RSS-Feed lässt sich, mit wenigen Codezeilen, einfach selbst erstellen. Diese stellen in erster Linie ein vorzügliches Instrument dar, den Bekanntheitsgrad einer Website zu steigern.
Spalten einer Tabelle dynamisch ändern
Manchmal möchte man die Spalten einer Tabelle dynamisch ändern so das diese individuell angezeigt werden können, wie das geht wird hier an einem Beispiel demonstriert.
Floodsperre
Um das Flooden (= Zumüllen mit großen Mengen meist sinnlosen Inhalts) von Foren und Gästebüchern etc. zu erschweren oder um zu verhindern das nach dem absenden des Formulars und drücken der F5-Taste (Seite neu laden) die Daten nochmals eingetragen werden, kann die hier vorgestellte Floodsperre einen Schutz bieten.