Zum Inhalt springen →

Mails per SMTP mit dem PHPMailer versenden

Jeder der schon mal aus einem PHP Skript heraus eine Mail verschickt hat, kennt den mail Befehl. Dieser Befehl ist recht einfach und funktioniert wunderbar, so lange man sich darauf verlässt, dass der Empfänger nicht irgendwelche Maßnahmen ergriffen hat, die so versendete Mails als Spam erkennen.

Da man sich bei z.B. einem Registrierungs-Formular oder anderen automatisch erzeugten Mails, bei denen man die Empfänger nicht kennt, nicht darauf verlassen kann, bin ich irgendwann mal auf den Versand per SMTP umgestiegen. Das ist wesentlich sicherer und die Wahrscheinlichkeit, dass die Mail wirklich da ankommt, wo sie soll ist wesentlich größer.

Da ich das Rad nicht neu erfinden wollte habe ich erst mal nach existierenden Libraries gesucht und bin dabei auf den PHPMailer  gestoßen. Der ist objektorientiert, einfach zu nutzen und hat bei mir auf Anhieb funktioniert.

Eigentlich benötigt man nur die Zugangsdaten zum SMTP Server und schon kann es losgehen. Die Library PHPMailer für den Versand von E-Mails per SMTP kann man unter github (https://github.com/msoftware/PHPMailer) finden. Der PHPMailer ist unter der GNU LESSER GENERAL PUBLIC LICENSE Version 2.1 veröffentlicht und kann daher auch für „nicht Open Source“ Projekte verwendet werden.

1. PHPMailer herunterladen

https://github.com/msoftware/PHPMailer/archive/master.zip

2. Entpacken und Upload des PHPMailers

Die Zip Datei muss nun entpackt werden und die daraus entstandene Ordnerstruktur (PHPMailer-master) komplett (z.B. per FTP) auf den Webserver kopiert werden.

3. Konfiguration des SMTP Servers

Als nächstes muss der SMTP Server konfiguriewrt werden. Eine typische Konfigurations-Datei könnte dann wie folgt aussehen.

smtpconfig.php

<?php
$mailhost       = "#######";  //SMTP Host name
$mailsmtpauth   = true;
$mailusername   = "########"; // SMTP Login
$mailpassword   = "########"; // SMTP Password
?>

In dieser einfachen Variante wird der SMTP Server ohne SSL/TLS angesprochen. Leider bieten das nicht alle Mail Server Dienstleister an. Im Falle eines Falles kann man aber noch $mailsmtpsecure = ‚tls‘ und $mailsmtpport = 587 für TLS ergänzen.

4. Senden von E-Mails aus dem PHP Skript per SMTP

Das Senden der Mail ist dann ein Kinderspiel und erfolgt mit Hilfe der folgenden Zeilen.

<?php
require_once('PHPMailer/class.phpmailer.php');
require_once('PHPMailer/class.smtp.php');
require_once(smtpconfig.php‘);

$mail = new PHPMailer(); 

$mail->IsSMTP();
$mail->Host       = $mailhost;
$mail->SMTPDebug  = 1; // Kann man zu debug Zwecken aktivieren
$mail->SMTPAuth   = true;
$mail->Username   = $mailusername;
$mail->Password   = mailpassword;

$frommail = "yourmail@yourdomain.tld";
$fromname = "Vorname Nachname";
$mail->SetFrom($frommail, $fromname);

$address = "empfänger@adresse.tld";
$adrname = "Vorname Nachname";
$mail->AddAddress($address, $adrname);

$mail->Subject = "Subject";
$mail->Body = "Der Mail Body";

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}
?>

Fazit:

Dank der PHPMailer Library kann man das Thema SMTP nun wesentlich schneller hinter sich bringen und hat noch mehr Zeit dafür, coole Features zu programmieren.

Veröffentlicht in PHP Programmierung