Formular: Aktion "an interne Seite übergeben" nutzen - Teil 2: SMPT-Versand
Im Artikel
Formular: Aktion "an interne Seite übergeben" nutzen - Teil 1 erklären wir, wie Sie die Daten eines Formulars an eine interne Seite in Ihrem Projekt übergeben. In diesem Artikel erfahren Sie, wie Sie diese Daten über SMTP per Mail versenden. Das ist zum Beispiel dann sinnvoll, wenn Ihr Provider den direkten Mail-Versand auf dem Web-Server nicht unterstützt.
Schritt 1: Was Sie benötigen
Mail-Konto Zugangsdaten
Sie benötigen die folgenden Angaben:
- Benutzername (Meistens handelt es sich um die vollständige E-Mail-Adresse)
- Das Mail-Passwort
- Die Mail-Server-Adresse
- Den Server-Port für den verschlüsselten Mail-Versand
- Das Protokoll für den verschlüsselten Mail-Versand (SSL oder TLS)
Schritt 2: Formular und Zielseite vorbereiten
Folgen Sie der Anleitung im
ersten Teil, um Ihr Formular und die Zielseite mit dem Skript vor zu bereiten.
Schritt 3: PHP-Code für das Auslesen und Versenden der Formular-Daten
Der folgende Code liest die Formulardaten aus und versendet den Inhalt ohne Schnickschnack oder schöne Formatierung per Mail via SMTP:
<?php
require_once('init.php');
require_once('Zend/Mail.php');
require_once('Zend/Mail/Transport/Smtp.php');
function filter($value) {
return strip_tags($value);
}
$bodyText = 'Formular-Daten: <br />';
foreach ($_POST as $name => $value) {
$value = filter($value);
$bodyText .= "$name: $value<br />";
}
$mailServer = 'Mail-Server';
$smptAuthentication = array(
'auth' => 'login',
'ssl' => 'Protokoll',
'port' => 'Mail-Port',
'username' => 'Benutzername',
'password' => 'Passwort'
);
$transport = new Zend_Mail_Transport_Smtp($mailServer, $smptAuthentication);
$mail = new Zend_Mail('UTF-8');
$mail->setSubject('Betreff');
$mail->setBodyText($bodyText);
$mail->setBodyHtml($bodyText);
$mail->setFrom('Absender-Mail-Adresse', 'Absender-Mail-Name');
$mail->addTo('Empfänger-E-Mail-Adresse');
try {
$mail->send($transport);
} catch (Zend_Exception $e) {
echo $e;
}
?>
Ersetzen Sie im Skript die in Rot und fett markierten Stellen durch die entsprechenden Angaben.
Wichtig: Das Skript funktoniert nur auf dem Server
Lokal stehen die Funktionen für den Mail-Versand via SMTP nicht zur Verfügung, das Skript funktioniert nur auf dem Web.Server, vorausgesetzt, dieser ist mit einer aktuellen PHP-Version bestückt. Am besten testen Sie das Skript auf einer eigenen Detailseite, die in Ihrem Web-Auftritt nicht über die Navigation verlinkt ist, bevor Sie Ihr Formular öffentlich zur Verfügung stellen.
Und so funktioniert das Skript
Wie in Teil 1 bereits erklärt, übergibt weblica die Daten per so genannter POST-Anfrage an den Web-Server der Website. PHP ermöglicht den Zugriff auf diese Daten über die global verfügbare Variable $_POST. Das Skript liest diese Daten aus und versendet Sie via SMTP. Hierzu benötigen Sie die in Schritt 1 erwähnten Mail-Zugangsdaten.
Aktion "per Mail versenden" und Mail-Versand per SMTP: der Unterschied
Das Wichtigste vorweg: Wenn Sie die Formular-Daten per Mail versenden möchten, dann nutzen Sie, wenn immer möglich, die in weblica angebotene Standard-Aktion "per Mail versenden". Bei dieser Variante reicht es, die gewünschte(n) Empfänger-Adresse(n) im Formular einzutragen, der Rest erledigt weblica für Sie. Hierbei wird die Mail-Funktion auf dem Mail-Server direkt verwendet, das Hinterlegen von vertraulichen Login-Daten ist dazu nicht erforderlich. Anders bei der Variante via SMTP:
Beim Versand via SMTP müssen Sie sich auf dem Mail-Server anmelden und hierzu die Login-Daten im Skript hinterlegen. Das Beispiel-Skript verwendet hierbei eine verschlüsselte Verbindung via SSL bzw. TLS, damit die Daten bei der Übertragung vor neugierigen Augen geschützt sind. Wir raten dringend davon ab, den Mail-Versand über eine unverschlüsselte Verbindung vor zu nehmen. Sollte Ihr Mail-Provider wider Erwarten keinen verschlüsselten Mail-Versand anbieten: Wechseln Sie den Provider!
Der Vorteil des direkten Mail-Versands auf dem Server über die Standard-Aktion "per Maiil versenden" liegt in der einfachen Handhabung und der Möglichkeit, die Mail mittels der Option "Als HTML-Mail versenden" mit einem Klick schön formatiert auszugeben.
Der Vorteil des Mail-Versands via SMTP liegt in der Flexibilität: Sie können für den Versand im Prinzip jeden beliebigen SMTP-Server verwenden und sind in der Gestaltung der versendeten Daten völlig frei. Diese Flexibilität geht aber klar zu Lasten der Einfachheit.