Heim > Backend-Entwicklung > PHP-Tutorial > Senden von E -Mails mit PHP

Senden von E -Mails mit PHP

Christopher Nolan
Freigeben: 2025-03-02 08:34:11
Original
823 Leute haben es durchsucht

Sending Emails with PHP

Kernpunkte

  • PHP bietet eine einfache und effiziente Möglichkeit, E -Mails zu senden, einschließlich grundlegender Klartextnachrichten, HTML -Nachrichten und Mailen mit Anhängen.
  • PHPs mail() -Funktion wird zum Senden von E -Mails verwendet. Für einfache E -Mails sind nur drei Parameter erforderlich: die Adresse des Empfängers, des Motivs und des Körpers der E -Mail.
  • Beim Senden von HTML -E -Mails oder E -Mails mit Anhängen müssen Sie den MIME -Standard verwenden, um die Mail in Teile zu unterteilen und mit ausgewählten Grenzen zu trennen. Jeder Abschnitt sollte definieren, was der Inhalt ist, wie er codiert ist, wie der Inhalt gehandhabt wird, und wie der Inhalt selbst.
  • Verwenden der Phpmailer -Bibliothek kann die Funktionalität des E -Mail -Sendens in PHP verbessern, wodurch eine Verbindung zu SMTP -Servern, Anhänge, Handhabungsfehler, Senden mehrerer E -Mails, Hinzufügen von benutzerdefinierten Headern und mehr hinzugefügt wird.

Möglicherweise möchten Sie ein Skript in PHP schreiben, um einem Freund eine E -Mail mit einer interessanten Antwortadresse zu senden. Es gibt jedoch immer sinnvollere Dinge zu tun! Natürlich haben Sie möglicherweise andere Gründe: Zum Beispiel benötigen Sie möglicherweise einen Cron-Job, um Sie über das Problem zu informieren, oder Sie werden benachrichtigt, wenn der Benutzer eingeleitet wird, oder Sie haben ein Kontakt mit uns, um die Nachricht an Sie weiterzuleiten, oder Sie möchten Ihre PHP-Fähigkeiten demonstrieren und Ihre eigenen webbasierten Mail-Kunden schreiben. Und es ist sehr einfach! In den meisten Fällen kann Ihre PHP -Installation E -Mails senden. Wenn Sie ein gemeinsam genutztes Hosting verwenden oder PHP über ein Paketverwaltungssystem wie APT-GET installieren lassen, sind Sie wahrscheinlich bereits eingerichtet. Sie müssen sich nur um eine zusätzliche Konfiguration kümmern, wenn Sie PHP aus Quelle kompilieren oder PHP unter Windows ausführen. In beiden Fällen sind viele Ressourcen online verfügbar, die Ihnen helfen. Da dies über den Rahmen dieses Artikels hinausgeht, gehe ich davon aus, dass Sie ihn eingerichtet haben. Wenn nicht, wird Google Ihr Freund sein.

Super Basic -Beispiel

Um eine sehr einfache E -Mail zu senden, lautet der Code wie folgt:

<?php mail($address, $subject, $message); ?>
Nach dem Login kopieren
Nach dem Login kopieren

Tatsächlich geht es darum, eine grundlegende E -Mail mit einfachem Text zu senden (wenn sie nicht für Sie funktioniert, überprüfen Sie Google erneut, um die ordnungsgemäße Konfiguration von PHP). Lassen Sie uns nun sehen, wie das im Skript aussieht. Angenommen, Sie möchten, dass das Skript Sie jedes Mal per E -Mail senden, wenn die Abfrage fehlschlägt:

<?php
$query = "SELECT left_arm AS arm_in, right_leg AS leg_in, front_head AS head_in FROM hokey_pokey WHERE its_about = 'all'";
try {
    $result = $db->query($query);
    // ...
} catch (PDOException $e) {
    mail("bad_things@my_database.com", "Error in " . $_SERVER["SCRIPT_NAME"], $e->getMessage());
}
?>
Nach dem Login kopieren

Wenn Ihre Abfrageausführung einige unvorhergesehene Fehler gibt, erhalten Sie eine E -Mail, in der Sie informiert werden, welches Skript einen Fehler hat und was der Fehler ist.

Volles HTML -Mail -Beispiel

Lassen Sie uns nun ein komplettes mehrteiliges Beispiel sehen mail(), das einen HTML -Körper und eine einfache Textalternative und einen Dateianhang enthält:

<?php mail($address, $subject, $message); ?>
Nach dem Login kopieren
Nach dem Login kopieren

Um das Verständnis der grundlegenden Konzepte zu vereinfachen, wurden einige Aspekte typischerer E -Mail -Skripte vereinfacht, obwohl ich dies in diesem Abschnitt erklären werde. Erstens ist das $emailList -Array mit einigen E -Mail -Adressen gefüllt, mit denen ich meine E -Mail weitergeben möchte. Das Array wird am Ende des Skripts iteriert und jede Adresse erhält eine Kopie meiner E -Mail. Als nächstes wird die $headers -Sziel mit verschiedenen E -Mail -Headern erstellt. Jeder Header in der Zeichenfolge wird durch CRLF (rn) getrennt und entspricht dem RFC 2822 -Standard, der das Format von E -Mail -Nachrichten definiert. "From:" Fluffy Mumsy " rn" von Header gibt die E -Mail -Adresse an, aus der der Empfänger die E -Mail sieht. "Antwort: Wergonnaberich@shhhsecret.comrn" Der Header für Antwort ist die E-Mail-Adresse, an die die E-Mail-Antwort gesendet werden soll. Indem es sich von der "von:" -Header unterscheidet, wird die Möglichkeit, dass diese E -Mail mit zunehmender Spam identifiziert wird (obwohl dies der einzige Grund ist, dass der E -Mail -Client diese Nachricht als Spam markiert, dann kann sie bestehen). "MIME-Version: 1.0RN" Der Mime-Version-Header sagt, dass der Server Mehrzweck-Internet-Mail-Erweiterung im Körper erwartet, sodass Sie fortgeschrittenere E-Mails als einfache Text haben können. Das "Inhaltstyp: Multipart/gemischt; boundary =" yagottakeepeMseparated "RN" Der "Inhaltstyp" -Header macht tatsächlich zwei Dinge: Es zeigt an, dass es mehrere verschiedene Arten von Teilen im Körper gibt und die Zeichenfolge verwendet, die verwendet wird, um jeden Teil zu trennen. Diese Grenzzeichenfolge kann in der Nachricht nirgendwo anders angezeigt werden, andernfalls kann der Mail -Client die Nachricht nicht richtig analysieren. Zum Beispiel könnten Sie "12" als Grenze verwenden, aber es wird wahrscheinlich an anderer Stelle in der Post erscheint. Ich habe "yagottakeepeMseparated" ausgewählt.Die meisten Menschen weisen einen zufällig erzeugten Hash als Grenze wie $boundary = md5(time()) zu, da die Wahrscheinlichkeit einer Kollision sehr niedrig ist. Der Inhalt von novyrus.zip (hier befindet sich im selben Verzeichnis wie das Skript) wird von Base64 codiert und in "Blöcke" unterteilt, sodass der Mail -Client einfacher zu handhaben ist. Das Ergebnis wird in $goodAttachment gespeichert und wird später erscheinen. Schließlich ist die Komposition des E-Mail-Körpers ... "--Yagottakeepemseparatedrn" Dies ist die erste Instanz, die früher definierte Grenze zu verwenden und dem Mail-Client mitzuteilen: "Hey, dies ist der Beginn des ersten Teils der E-Mail-Nachricht, der immer mit einem doppelten Dash vor der von Ihnen ausgewählten Grenzzeichenfolge beginnt. "Inhaltstyp: Multipart/Alternative; bloße =" Jedes EMailalternative "RN" Zusätzlich zu dem im E-Mail-Header angegebenen "Multipart/gemischten" können Sie auch "Multipart/Alternative" im Körper und unterschiedliche Grenzen (spezifisch für diesen Zusammenbruch) verwenden, um ein alternatives Format für Nachrichten bereitzustellen. "-EeAchemailalternativen" Dies ist die erste Instanz der verschachtelten Grenze und startet die erste alternative Version der Nachricht. "Inhaltstyp: text/plain; charset =" ISO-8859-1 "RN". Dieser Inhalts-Header sagt dem Mail-Client, dass diese Alternative einfacher Text ist. Wenn der Client keine komplexeren Formate (z. B. HTML) anzeigen kann, wird diese Version der Nachricht verwendet. Der "Content-Transfer-Coding: 7bitrn" -Kenner-kodierende Header gibt das in der Nachricht verwendete Codierungsschema an. Aus historischen Gründen ist "7bit" der Standardwert, sodass er weggelassen werden kann. Ich habe es nur aufgenommen, um Sie wissen zu lassen. "Sie haben eine günstige Text-E-Mail, die Sie kein Geld haben. Bitte ignorieren Sie. "-EeAchemailalternativen" Die erste Alternative ist abgeschlossen und Sie können die nächste Alternative starten. "Inhaltstyp: text/html; charset =" iSO-8859-1 "RN" Dieser Header vom Typ Inhalt benachrichtigt den Client, dass diese Version als HTML formatiert ist und der Charaktersatz verwendet wird. "... rn" beachten Sie, dass sich der Inhalt dieser Version sehr von der einfachen Textversion unterscheidet, außer dass er HTML -Tags enthält. Einige Spam -Filter betrachten dies möglicherweise als einen weiteren Grund, um zu verhindern, dass meine Post meinen Posteingang erreicht. "--yagottakeepemseparatedrn" Dies ist die mehrteilige/gemischte Grenze, die darauf hinweist, dass Sie das Ende des Abschnitts des Nachrichtenkörpers erreicht haben, der alle Alternativen enthält. "Inhaltstyp: application/zip; name =" novyrus.zip "rn" Der Header vom Typ Inhalt zeigt an, dass der nächste Teil der E-Mail eine Anhang (novyrus.zip Datei) ist und es sich um eine Zip-Datei handelt. "Content-Transfer-Coding: Base64RN" 7-Bit-Codierungslimit-Zeichen für sieben Bits und können nicht alle von einer ZIP-Datei erforderlichen Binärzeichen repräsentieren. Deshalb ist die Datei Basis64 codiert und geschnürt. Mit dem Content-transfer-kodierenden Header hier wissen Sie, wie der Client die Anhangsdatei dekodieren. Die "Inhaltsdisposition: AttachmentRN" -Kupplungs-Header beschreibt, wie der Inhalt wiedergegeben wird.Während es wenig sinnvoll ist, eine ZIP -Datei als Inline -Element in einer Nachricht anzuzeigen, ist es sehr nützlich, um Bilder einzubetten. $goodAttachment . "rn" Der Inhalt der beigefügten Datei wird einfach in den Mix abgeladen. "-Yagottakeepemseparated ..." Dies ist die endgültige Grenze, die Deklaration endet mit einem Satz von Doppelfragen am Ende ohne Inhalt.

Zusammenfassung

Das ist es! Sie haben gelernt, wie man ultra-basische Text-E-Mails und vollständige HTML-E-Mails mit Anhängen sendet. Eine einfache E -Mail ruft einfach die mail() -Funktion auf. Für HTML -Nachrichten müssen Sie die E -Mails mit dem MIME -Standard in Abschnitte unterteilen und mit der Grenze Ihrer Wahl trennen. Sie definieren dann, was der Inhalt ist, wie er codiert ist, wie der Inhalt gehandhabt wird, und den Inhalt selbst. Abhängig davon, wer Sie E -Mails senden möchten, müssen Sie sich darüber im Klaren sein, was Ihre E -Mail höhere Wahrscheinlichkeit als Spam machen, nur für den Fall, dass Sie wirklich etwas Ernstes senden möchten. Bilder von Photosani / Shutterstock

FAQs über das Senden von E -Mails mit PHP

(Der FAQ-Teil wird hier weggelassen, da die Länge zu lang ist und nicht mit dem pseudooriginalen Ziel übereinstimmt. Der Inhalt des FAQ-Teils steht im Einklang mit dem Originaltext. Nehmen Sie einfach die Anweisungen für den Originaltext, um Pseudooriginal zu vervollständigen.)

Das obige ist der detaillierte Inhalt vonSenden von E -Mails mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage