Warum sollte ich die mail()-Funktion von PHP nicht verwenden?

Meistens ist die allgemeine Meinung, die standardmäßige mail()-Funktion von PHP nicht zum Versenden von E-Mails zu verwenden.
Verwenden Sie stattdessen einige Bibliotheken, bei denen Sie viel mehr Flexibilität und Kontrolle darüber haben, was Sie senden.
Es gibt viele Header, die eigentlich nicht fortgeschritten sind, aber nicht als Teil des standardmäßigen mail()-Aufrufs enthalten sind, was die Integration für die Entwickler umständlich macht.

Die Standardfunktion ist wahrscheinlich zu einfach und unterstützt einige der wichtigsten Funktionen wie das Anhängen einer Datei oder das Senden von HTML oder die Verwendung von Bcc/Cc nicht wirklich.

Das Versenden von E-Mails über PHP hat seine Vor- und Nachteile.
Bevor wir zum Schluss kommen, wollen wir zunächst die wichtigsten Nachteile der Verwendung der standardmäßigen PHP-Funktion mail() zum Versenden von E-Mails verstehen. Es gibt Fälle, in denen die über PHP mail() gesendete E-Mail nicht vom Empfänger empfangen wurde und Sie auch keine visuellen Fehler erhalten. Der häufigste Grund dafür ist wie folgt:

  1. falsches Format des Mailheaders oder Inhalts (z.B. Unterschiede in der Zeilenumbrüche zwischen Windows/Unix)
  2. sendmail nicht auf Ihrem Server (php.ini) installiert oder konfiguriert - Dies ist einer der häufigsten Gründe dafür, dass E-Mails nicht zugestellt werden.
  3. der Hosting-Provider des Absenders erlaubt keine E-Mails, die mit PHP mail() versendet werden; Dies ist die gebräuchlichste Spam-Schutzrichtlinie, die fast jeder Hosting-Anbieter auf seinem Server hinzufügt. Dabei blockieren sie in erster Linie die ausgehenden SMTP-Ports 25, 587 und 465.

Außerdem ist es eine allgemeine Beobachtung, dass E-Mails, die über die standardmäßige PHP-Funktion mail() gesendet werden, Probleme mit dem Format des Headers oder des Inhalts haben, die ernsthafte Spam-Probleme verursachen können.

In den meisten Fällen landen E-Mails, die über die Standardfunktion versendet werden, im Spam-Ordner des Postfachs Ihres Empfängers oder werden an den Absender zurückgesendet oder einfach abgelehnt. GMX ist das beste Beispiel für einen kostenlosen Mail-Anbieter, der solche E-Mails ablehnt oder löscht, ohne den Empfänger zu informieren. PHP mail from address macht hier kaum Sinn.

Während andere Anbieter wie Gmail die E-Mails akzeptieren, aber diese im Spam-Ordner filtern.

Tatsächlich finden Sie den folgenden Hinweis im offiziellen PHP.net-Handbuch, der deutlich sagt, dass die Funktion mail() nicht zum Senden einer größeren Menge von E-Mails geeignet ist.

📘

Notiz

Es ist erwähnenswert, dass die Funktion mail() nicht für größere E-Mail-Mengen in einer Schleife geeignet ist. Diese Funktion öffnet und schließt für jede E-Mail einen SMTP-Socket, was nicht sehr effizient ist.
Informationen zum Versenden großer E-Mail-Mengen finden Sie in den Paketen » PEAR::Mail und » PEAR::Mail_Queue.

Es ist nicht nur die Funktion mail() von Bedeutung, sondern auch der SMTP-Server. Es gibt verschiedene Arten von SMTP-Servern. Sendmail ist der Standard, aber es gibt noch einige andere Open-Source-SMTP-Server wie Postfix, Gmail.

Postfix ist definitiv eines der am einfachsten zu integrierenden, insbesondere mit der Mail-Funktion in PHP, aber meistens werden Sie es nicht als eine einzige Bereitstellung finden, bei der Sie Postfix installiert haben und es einfach reibungslos funktioniert.

🚧

Notiz

Wenn Sie Massen-E-Mails senden, achten Sie bitte auf die verwendete Server-IP-Adresse und die verwendete PHP-Mail-Von-Adresse, da die PHP-Mail()-Funktion standardmäßig die Standard-IP und den Hostnamen des Servers als "Von" verwendet.

Häufige Probleme wie beschädigte Anhänge, nicht empfangene oder beschädigte Bcc/CC-E-Mails werden zwangsläufig auftreten. Und sobald Sie damit beginnen, Fixes für all dies hinzuzufügen, werden Sie feststellen, dass Ihr Code etwas unübersichtlich wird und ihn inkompatibel macht, um reibungslos mit anderen SMTP-Servern zu funktionieren.

Wenn Sie also wirklich Zeit haben, alle diese Probleme zu lösen, fahren Sie mit core mail() fort; Funktion zum Senden von E-Mails, ansonsten verwenden Sie zum Versenden von E-Mails eine Bibliothek wie PHPMAILER, die Open Source ist, oder wechseln Sie einfach zu einem guten ESP (E-Mail). Dienstanbieter).

  • Wenn Sie sich für einen guten ESP entscheiden und die besten E-Mail-Praktiken befolgen, können Sie Ihre E-Mails vor Spam schützen.*