So senden Sie E-Mails mit der PHP-Funktion mail()
โก Intelligente Zusammenfassung
PHP mail ist die integrierte Funktion, mit der E-Mails direkt aus einem PHP-Skript รผber die SMTP-Einstellungen des Servers versendet werden kรถnnen. Diese Anleitung behandelt die Syntax und die Parameter von mail(), die Konfiguration von SMTP in der php.ini, die Bereinigung von Benutzereingaben mit filter_var, den Versand sicherer E-Mails und die Verwendung von PHP.Mailer fรผr zuverlรคssige Lieferung.

Was ist PHP-Mail?
PHP mail ist die in PHP integrierte Funktion, die zum Versenden von E-Mails aus PHP-Skripten verwendet wird.
Die Mail-Funktion akzeptiert die folgenden Parameter:
- E-Mail-Adresse
- Betreff
- Nachricht
- E-Mail-Adressen in CC oder BCC
Warum und wann man PHP-Mail verwenden sollte
Die E-Mail-Funktion ist in vielen Situationen nรผtzlich:
- Es handelt sich um eine kostengรผnstige Methode, Benutzer รผber wichtige Ereignisse zu informieren.
- Ermรถglichen Sie Benutzern die Kontaktaufnahme mit Ihnen per E-Mail, indem Sie auf der Website ein Kontaktformular bereitstellen, das den bereitgestellten Inhalt per E-Mail sendet.
- Entwickler kรถnnen es nutzen, um Systemfehler per E-Mail zu erhalten.
- Sie kรถnnen es verwenden, um Ihren Newsletter-Abonnenten E-Mails zu senden.
- Sie kรถnnen es verwenden, um Benutzern, die ihr Passwort vergessen haben, Links zum Zurรผcksetzen des Passworts zu senden.
- Sie kรถnnen es verwenden, um Aktivierungs- und Bestรคtigungslinks per E-Mail zu versenden. Dies ist hilfreich bei der Registrierung von Benutzern und der รberprรผfung ihrer E-Mail-Adressen.
Senden von E-Mails mit PHP
Die PHP-Funktion mail hat folgende grundlegende Syntax.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
HIER,
- โ$to_email_addressโ ist die E-Mail-Adresse des Mailempfรคngers
- โ$subjectโ ist der Betreff der E-Mail
- โ$messageโ ist die zu sendende Nachricht.
- โ[$headers]โ ist optional; es kann verwendet werden, um Informationen wie CC und BCC einzuschlieรen.
- CC ist die Abkรผrzung fรผr Carbon Copy (Kopie). Sie wird verwendet, wenn man eine Kopie an eine interessierte Person senden mรถchte, z. B. kann eine Beschwerde-E-Mail an ein Unternehmen auch als Kopie an die Beschwerdestelle weitergeleitet werden.
- BCC ist die Abkรผrzung fรผr Blindkopie. Es ist รคhnlich wie CC, aber die im BCC-Feld aufgefรผhrten E-Mail-Adressen werden den anderen Empfรคngern nicht angezeigt.
Einfacher Mail Transmission Protokoll (SMTP)
PHP Mail verwendet die einfache Mail Transmission Protokoll (SMTP) zum Senden von E-Mails.
Auf einem gehosteten Server wรคren die SMTP-Einstellungen bereits konfiguriert.
Die SMTP-Mail-Einstellungen kรถnnen in der Datei โphp.iniโ im PHP-Installationsordner konfiguriert werden.
Um die SMTP-Einstellungen auf Ihrem lokalen Rechner zu konfigurieren (vorausgesetzt, Sie verwenden XAMPP), WindowsSuchen Sie die Datei โphp.iniโ im Verzeichnis โC:\xampp\phpโ.
- รffnen Sie die Datei mit Notepad oder einem beliebigen Texteditor. In diesem Beispiel verwenden wir Notepad. Klicken Sie auf das Menรผ โBearbeitenโ.
- Klicken Sie auf das Menรผ โSuchenโฆโ.
- Der Dialog โSuchenโ wird angezeigt
- Klicken Sie auf die Schaltflรคche โNรคchstes suchenโ.
Suchen Sie die Eintrรคge unter [mail function]. Die Standardzeilen sehen normalerweise so aus:
- ; SMTP = lokaler Host
- ; smtp_port = 25
Entfernen Sie die Semikolons vor SMTP und smtp_port und legen Sie SMTP auf Ihren Wert fest. SMTP-Server und den Port fรผr Ihren SMTP-Port. Ihre Einstellungen sollten wie folgt aussehen:
- SMTP = smtp.example.com
- smtp_port = 25
Hinweis: Die SMTP-Einstellungen erhalten Sie von Ihrem Webhosting-Anbieter. Falls der Server eine Authentifizierung erfordert, fรผgen Sie die folgenden Zeilen hinzu:
- auth_username = example_username@example.com
- auth_password = example_password
Speichern Sie die neuen รnderungen und starten Sie das Programm neu. Apache Server.
PHP Mail Beispiel
Schauen wir uns nun ein Beispiel an, das eine einfache E-Mail versendet.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
Ausgang:
Hinweis: Das obige Beispiel verwendet nur die vier Pflichtfelder. Ersetzen Sie die fiktive E-Mail-Adresse durch eine echte E-Mail-Adresse.
Bereinigen von E-Mail-Benutzereingaben
Das obige Beispiel verwendet der Einfachheit halber fest codierte Werte im Quellcode fรผr die E-Mail-Adresse und andere Details.
Nehmen wir an, Sie mรผssen ein Kontaktformular erstellen, in dem die Benutzer die Details ausfรผllen und es dann absenden.
- Benutzer kรถnnen versehentlich oder absichtlich Code in die Header einfรผgen, was zum Versenden von Spam-Mails fรผhren kann.
- Um Ihr System vor solchen Angriffen zu schรผtzen, kรถnnen Sie eine benutzerdefinierte Funktion erstellen, die die Werte vor dem Senden der E-Mail bereinigt und validiert.
Wir erstellen eine benutzerdefinierte Funktion, die die E-Mail-Adresse mithilfe der integrierten Funktion `filter_var` validiert und bereinigt. Die Funktion `filter_var` dient der Bereinigung und Validierung von Benutzereingaben.
Es hat die folgende grundlegende Syntax.
<?php filter_var($field, SANITIZATION_TYPE); ?>
HIER,
- โfilter_var(โฆ)โ ist die Validierungs- und Bereinigungsfunktion
- โ$fieldโ ist der Wert des zu filternden Feldes.
- โSANITIZATION_TYPEโ ist die Art der Bereinigung, die am Feld durchgefรผhrt werden soll, z. B.:
- FILTER_VALIDATE_EMAIL โ Gibt โtrueโ fรผr gรผltige E-Mail-Adressen und โfalseโ fรผr ungรผltige E-Mail-Adressen zurรผck.
- FILTER_SANITIZE_EMAIL โ Entfernt ungรผltige Zeichen aus E-Mail-Adressen, sodass eine Adresse mit รผberflรผssigen Zeichen auf info@domain.com reduziert wird.
- FILTER_SANITIZE_URL โ entfernt ungรผltige Zeichen aus URLs, wodurch eine saubere Adresse wie z. B. https://www.example.com entsteht.
- FILTER_SANITIZE_STRING โ Entfernt Tags aus Zeichenkettenwerten, sodass aus โam boldโ โ am boldโ wird. Beachten Sie, dass dieser Filter in PHP 8.1 veraltet ist; verwenden Sie stattdessen htmlspecialchars().
Der unten stehende Code verwendet eine benutzerdefinierte Funktion zum Versenden sicherer E-Mails.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
Ausgang:
und geschรผtzt Mail
E-Mails kรถnnen wรคhrend der รbertragung von unbeabsichtigten Empfรคngern abgefangen werden.
Dadurch kรถnnen die Inhalte der E-Mail unbeabsichtigten Empfรคngern zugรคnglich gemacht werden.
Sichere E-Mail lรถst dieses Problem, indem transmitE-Mails werden รผber eine verschlรผsselte Verbindung mit SSL oder TLS versendet, zum Beispiel SMTP รผber SSL auf Port 465 oder STARTTLS auf Port 587.
Durch die Verschlรผsselung wird die Nachricht vor dem Senden unleserlich gemacht, sodass sie nur vom Mailserver des beabsichtigten Empfรคngers gelesen werden kann.
PHPMailer: Eine bessere Alternative zu mail()
Fรผr reale Anwendungen verwenden die meisten Entwickler PHP.MailDie Bibliothek `er` wird anstelle der direkten `mail()`-Funktion verwendet. PHPMailDie Authentifizierung erfolgt รผber einen externen SMTP-Server, was die Zustellbarkeit deutlich verbessert und das Hinzufรผgen von Anhรคngen und HTML-E-Mails vereinfacht.
Installieren Sie es mit Composer und senden Sie dann E-Mails รผber eine authentifizierte, verschlรผsselte SMTP-Verbindung, wie unten gezeigt.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
Im Vergleich zu mail(), PHPMailer bietet Ihnen SMTP-Authentifizierung, integrierte Verschlรผsselung, Unterstรผtzung fรผr Anhรคnge und eine รผbersichtlichere Fehlerbehandlung. Daher ist es die empfohlene Wahl fรผr produktive E-Mails.






