Kernpunkte
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. 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); ?>
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()); } ?>
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); ?>
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 "$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!