Kontaktformular - E-Mail mit PHPMailer und SMTP versenden
![[Bildschirmfoto / Grafik]
Berechnungen mit dem Datum [Bildschirmfoto / Grafik]
Berechnungen mit dem Datum](img/phpmailer_smtp.png)
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.