E-Mail-Versand mit PHP: PHPMailer, mail() und Alternativen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

E-Mail-Versand mit PHP: Von der integrierten mail() bis zu leistungsstarken Bibliotheken



Der Versand von E-Mails ist eine der Kernfunktionen jeder Webanwendung: Benutzerregistrierung, Passwort-Wiederherstellung, Benachrichtigungen, Newsletter. In PHP gibt es mehrere Ansätze: von der einfachen integrierten Funktion mail() bis hin zu spezialisierten Bibliotheken wie PHPMailer und SwiftMailer. In diesem Artikel werden wir jede Methode im Detail besprechen, Codebeispiele zeigen und Empfehlungen zur Auswahl geben.



1. Die integrierte Funktion mail()



Die Funktion mail() ist der einfachste Weg, eine E-Mail zu versenden. Sie verwendet den in der PHP-Konfiguration (sendmail_path oder SMTP) eingerichteten Mailserver. Ihre Möglichkeiten sind jedoch begrenzt, und sie unterstützt keine modernen Anforderungen: HTML-Formatierung, Anhänge, SMTP-Authentifizierung.



Basisbeispiel

<?php$to = 'user@example.com';$subject = 'Betreff der E-Mail';$message = 'Hallo! Dies ist eine Test-E-Mail.';$headers = 'From: no-reply@mysite.ru' . "\\r" .    'Reply-To: support@mysite.ru' . "\\r" .    'X-Mailer: PHP/' . phpversion();

if (mail($to, $subject, $message, $headers)) { echo 'E-Mail gesendet';} else { echo 'Fehler beim Senden';}?>


Nachteile von mail()

  • Keine Unterstützung für HTML-E-Mails (manuelles Setzen von Content-Type: text/html erforderlich)
  • Keine Möglichkeit, Dateien ohne komplexe MIME-Manipulationen anzuhängen
  • Keine Verschlüsselung und SMTP-Authentifizierung
  • E-Mails landen oft im Spam aufgrund fehlender korrekter Header
  • Schwierige Fehlersuche


Für moderne Projekte wird mail() nicht empfohlen. Besser ist die Verwendung spezialisierter Bibliotheken.



2. PHPMailer – Der Goldstandard



PHPMailer ist die beliebteste Bibliothek zum E-Mail-Versand in PHP. Sie unterstützt SMTP, SSL/TLS, HTML-E-Mails, Anhänge, Alternativtext, mehrere Empfänger und vieles mehr. Die Installation erfolgt über Composer:



composer require phpmailer/phpmailer


Beispiel für den Versand über SMTP (Gmail)

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

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try { // Servereinstellungen $mail->SMTPDebug = SMTP::DEBUG_SERVER; $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'your@gmail.com'; $mail->Password = 'your-app-password'; // App-Passwort $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465;

// Absender und Empfänger $mail->setFrom('from@example.com', 'Absender'); $mail->addAddress('user@example.com', 'Empfänger'); $mail->addReplyTo('info@example.com', 'Information');

// Anhänge (optional) $mail->addAttachment('/path/to/file.pdf', 'document.pdf');

// Inhalt $mail->isHTML(true); $mail->Subject = 'Betreff der E-Mail'; $mail->Body = '<h1>Hallo!</h1><p>Diese E-Mail enthält <b>HTML</b>.</p>'; $mail->AltBody = 'Hallo! Dies ist die Textversion der E-Mail.';

$mail->send(); echo 'E-Mail gesendet';} catch (Exception $e) { echo "Fehler: {$mail->ErrorInfo}";}?>


Vorteile von PHPMailer

  • Vollständige SMTP-Unterstützung mit Authentifizierung
  • Automatische Erstellung von MIME-Headern
  • Unterstützung für Anhänge und eingebettete Bilder
  • Arbeit mit HTML- und Textversion der E-Mail
  • Detaillierte Fehlermeldungen
  • Aktive Community-Unterstützung


3. SwiftMailer – Alternative mit flexibler Architektur



SwiftMailer ist eine weitere leistungsstarke Bibliothek (inzwischen ersetzt durch

Empfehlungen