E-Mails mit PHPMailer versenden – so einfach geht’s!


PHPMailer ist ein Framework, das die E-Mail-Übertragung via PHP regelt. Einsatz findet diese Art des E-Mail-Versands vor allem bei Kontaktformularen auf Websites, aber auch der private E-Mail-Versand ist kein Problem.

Hosted Microsoft Exchange mit IONOS

Erhalten Sie die weltweit führende E-Mail- und Kalender-Lösung inklusive sicherem Hosting aus einer Hand mit Hosted Microsoft Exchange von IONOS!

50 GB email
Kostenlose Domain
24/7 Support

Was ist PHPMailer?

PHPMailer ist eine von der Community bereitgestellte Mail-Erweiterung für PHP. Im Gegensatz zum Mail-Befehl, der in PHP von Anfang an implementiert ist, ist die Wahrscheinlichkeit, dass mit PHPMailer versendete E-Mails im Spam-Ordner landen, wesentlich geringer. Grund dafür ist, dass der Versand der mit PHPMailer erzeugten Mails mittels SMTP erfolgt. Hierbei handelt es sich um das Simple Mail Transfer Protocol, mit dem E-Mails über das Internet übertragen werden.

Wofür nutzt man PHPMailer?

Die Nutzung von PHPMailer ist ein wenig umständlicher als die Nutzung von E-Mail-Providern oder integrierten Mailprogrammen am Computer. Eine berechtigte Frage ist daher, in welchen Gebieten sich der Einsatz von PHPMailer lohnt. Der Einsatz des PHP-Frameworks erleichtert Ihnen das Erstellen automatisierter Antworten, wie sie beispielsweise beim Betreiben eines Webshops anfallen. Auch für Kontaktformulare auf Ihrer Website bietet sich PHPMailer bestens an.

Voraussetzungen für den Einsatz von PHPMailer

Um mit PHPMailer arbeiten zu können, benötigen Sie als erstes einen SMTP-Server. Ob Sie den Mailserver von einem Provider nutzen oder Ihren eigenen Server aufsetzen, ist dabei ganz Ihnen überlassen. Darüber hinaus ist für die Installation der PHP-Erweiterung ein Paketmanager für PHP wie etwa Composer empfehlenswert.

Tipp

Eine weitere Voraussetzung für den Einsatz von PHPMailer ist das Beherrschen von PHP-Grundlagen. Haben Sie hierbei noch Schwierigkeiten, hilft Ihnen unser PHP-Einsteiger-Tutorial weiter!

Installation von PHPMailer: Schritt-für-Schritt-Anleitung

Schritt 1: Aktuelle PHPMailer-Version herunterladen

Laden Sie sich die neueste Version von PHPMailer herunter. Der Download kann mittels Paketmanager oder auch manuell von GitHub erfolgen.

Variante 1: Download mittels Composer

Haben Sie den Paketmanager Composer installiert, nutzen Sie hierzu einfach den Befehl:

composer require phpmailer/phpmailer

Wichtig: Haben Sie PHPMailer mit Composer installiert, müssen Sie den Composer in Ihren PHP-Code einbinden, um Mails versenden zu können.

Hierfür bietet sich die folgende Codezeile an:

require_once "vendor/autoload.php";

Das Schlüsselwort „require_once“ sorgt dafür, dass der Composer nur einmal eingebunden werden kann. Ales andere könnte zu unvorhersehbarem Verhalten oder zu Programmfehlern führen. Die Installation mittels Composer ist nun abgeschlossen.

Variante 2: Download direkt von GitHub

Die PHPMailer Quelldateien kann man auch manuell herunterladen, indem man im entsprechenden GitHub-Repository den Button „Clone or download“ betätigt.

Schritt 2: Dateien entpacken

Haben Sie den Quellcode von PHPMailer manuell heruntergeladen, müssen Sie die ZIP-Datei öffnen. Wählen Sie hierfür den Ort aus, an dem Sie PHPMailer installieren möchten. Auch hier müssen Sie PHPMailer zunächst in Ihr Skript einbinden. Ausgehend von der Annahme, dass Sie die PHPMailer-Dateien in einem Verzeichnis namens PHPMailer entpackt haben, nutzen Sie hierfür folgende Zeilen Code:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

/* Klasse zur Behandlung von Ausnahmen und Fehlern */
require 'C:\PHPMailer\src\Exception.php';

/* PHPMailer-Klasse */
require 'C:\PHPMailer\src\PHPMailer.php';

/* SMTP-Klasse, die benötigt wird, um die Verbindung mit einem SMTP-Server herzustellen */
require 'C:\PHPMailer\src\SMTP.php';

$email = new PHPMailer(TRUE);

Versenden von E-Mails mit PHPMailer: Schritt-für-Schritt-Anleitung

Schritt 1: Namensräume einbinden

Um bequem auf den PHPMailer zuzugreifen, stellen Sie zunächst sicher, dass die Namensräume korrekt eingebunden sind. Hierfür werden use-Statements genutzt, sodass Ihr Code folgende Zeilen enthalten sollte:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

Auf die einzelnen Klassen können Sie nun zugreifen, indem Sie den Namen nach dem letzten Slash benutzen.

Schritt 2: Fehler abfangen

Auch, wenn PHPMailer eine sehr zuverlässige Variante ist, um E-Mails zu versenden, kann es hin und wieder zu Fehlern kommen. Damit keine sensiblen Daten Ihres Mailservers in Form einer Fehlermeldung an die Nutzer ausgegeben werde, lohnt es sich, den E-Mailversand mithilfe einer sogenannten Try-Catch-Anweisung zu umgeben:

try {
    // Versuch, eine neue Instanz der Klasse PHPMailer zu erstellen
    $mail = new PHPMailer (true);
// (…)
} catch (Exception $e) {
        echo "Mailer Error: ".$mail->ErrorInfo;
}

Schritt 3: Authentifikation mit SMTP

Um PHPMailer nutzen zu können, müssen Sie sich anschließend mit über SMTP authentifizieren. Hierzu geben Sie neben der Adresse Ihres Mailservers das entsprechende Protokoll (entweder TLS/SSL oder SMTP) samt Port, Ihren Nutzernamen und Ihr Passwort ein. Welches Protokoll und welcher Port verwendet werden, ist abhängig von Ihrem Mailprovider. Die jeweiligen Serverdaten lassen sich auf den Websites der Mailanbieter einfach abrufen.

$mail->isSMTP();
$mail->SMTPAuth = true;

// Persönliche Angaben
$mail->Host = "smtp.domain.de";
$mail->Port = "587";
$mail->Username = "name.nachname@domain.de";
$mail->Password = "probepasswort4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

Schritt 4: Empfänger der E-Mail angeben

Nun können Sie die Empfänger Ihrer E-Mail im Skript angeben.

// Absender
$mail->setFrom('info@example.com', 'name');
// Empfänger, optional kann der Name mit angegeben werden
$mail->addAddress('info@example.com', 'name');
// Kopie
$mail->addCC('info@example.com');
// Blindkopie
$mail->addBCC('info@example.com', 'name');

Schritt 5: Mailinhalt hinzufügen

Das Wichtigste darf natürlich nicht fehlen: der Inhalt Ihrer E-Mail. Dieser Inhalt besteht in der Regel aus einem Betreff und einem Text, der sowohl als HTML- als auch als Nicht-HTML-Version angegeben wird. Wichtig: Ältere Software kann nicht zwingend mit dem aktuellen HTML5-Standard umgehen, sodass es sich lohnen kann, Ihre E-Mail lediglich mit HTML zu designen.

Auch Anhänge können Sie mit PHPMailer mühelos versenden. Hierzu hilft Ihnen die Funktion addAttachment. Sowohl Bilder als auch Musik, Dokumente, Videos oder GIFs können mit PHPMailer verschickt werden. Sie können Ihre Anhänge außerdem mit einem optionalen zweiten Parameter, der der Funktion übergeben wird, umbenennen.

$mail->isHTML(true);
// Betreff
$mail->Subject = 'Der Betreff Ihrer Mail';
// HTML-Inhalt
$mail->Body = 'Der Text Ihrer Mail als HTML-Inhalt. Auch <b>fettgedruckte</b> Elemente sind beispielsweise erlaubt.';
$mail->AltBody = 'Der Text als simples Textelement';

// Anhang hinzufügen
$mail->addAttachment("/home/user/Desktop/beispielbild.png", "beispielbild.png");

Schritt 6: Korrekte Zeichenkodierung verwenden

Im deutschsprachigen Raum bietet es sich aufgrund der verschiedenen Umlaute an, UTF-8 bei PHPMailer zu aktivieren, sodass insbesondere bei der Nutzung verschiedener Anhänge keine Darstellungsfehler auftreten. Fügen Sie hierzu folgende Zeilen Code in Ihr PHP-Skript ein:

$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';

Schritt 7: E-Mail versenden

In einem letzten Schritt müssen Sie Ihre E-Mail nur noch versenden. Hierzu nutzen Sie den Befehl:

Achten Sie darauf, den gesamten hier gezeigten Code bis hin zu dieser Sendeaufforderung im Try-Anweisungsblock Ihres Skripts zu platzieren, damit eventuelle Fehler wie beschrieben abgefangen werden.

Ein Codebeispiel zum E-Mail-Versand

Den gesamten Code, den Sie benötigen, um eine E-Mail, die außerdem ein Bild als Anhang hat, mit PHPMailer an einen Empfänger Ihrer Wahl zu versenden, finden Sie hier noch einmal zusammengefasst:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

try {
        // Instanz der PHPMailer-Klasse erstellen
        $mail = new PHPMailer($debug);

        if ($debug) {
                // gibt einen ausführlichen log aus
                $mail->SMTPDebug = PHPMailer\PHPMailer\SMTP::DEBUG_SERVER; }
        }

        // Authentifikation mittels SMTP
        $mail->isSMTP();
        $mail->SMTPAuth = true;

        // Login
        $mail->Host = "smtp.domain.de";
        $mail->Port = "587";
        $mail->Username = "name.nachname@domain.de";
        $mail->Password = "probepasswort4321";
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

        $mail->addAttachment("/home/user/Desktop/beispielbild.png", "beispielbild.png");

     $mail->CharSet = 'UTF-8';
     $mail->Encoding = 'base64';

        $mail->isHTML(true);
        $mail->Subject = 'Der Betreff Ihrer Mail';
     $mail->Body = 'Der Text Ihrer Mail als HTML-Inhalt. Auch <b>fettgedruckte</b> Elemente sind beispielsweise erlaubt.';
     $mail->AltBody = 'Der Text als simples Textelement';

        $mail->send();

} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: ".$mail->ErrorInfo;
}



Source link

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen