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>

Herunterladen 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

Fehler 404 mit .htaccess abfangen
Eine Website wird öfters umgebaut, Seiten kommen hinzu, andere Seiten werden entfernt oder bekommen eine neue Adresse. Eine selbst gestaltete Fehler-Weiterleitungsseite, leitet den Besucher sicher zum Angebot der Webseite.
Hinzufügen von Wasserzeichen beim hochladen eines Bildes
Ein Wasserzeichen ist die beste Option, um das Bild vor Diebstahl oder der Wiederverwendung durch eine andere Person zu schützen. Sie können den Besitz anzeigen, indem Sie dem Bild Wasserzeichen hinzufügen. Das Wasserzeichen hilft, den Ersteller zu identifizieren.
SQLite-Datei mit PHP und PDO erstellen
Der Vorteil von SQLite ist, das die Datenbank eine Text-Datei ist und keine Verbindung zu einem Datenbank-Server benötigt wird.