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

Lokalen Webserver einrichten und verwenden
Um PHP-Scripte auszuführen benötigt man einen Webserver. Um nun nicht jede Datei zum testen erst per FTP auf seinen Webserver zu laden ist es sinnvoll, sich lokal auf dem Rechner einen sog. lokalen Webserver zu installieren.
Mit PHP zeichnen - Eine Grafik mit PHP erstellen
Mit den Grafikfunktionen können Sie zur Laufzeit des PHP-Scripts auch Grafiken erzeugen.
Berechnungen mit dem Datum
Feiertage, Mondphase, Wochentag, Sonnenaufgang und Sonnenuntergang, Julianisches Datum, Sternzeichen, ...