Senden Sie E-Mail von einem Web-Formular mit PHP

Senden Sie den Inhalt eines Online-Formular eine E-Mail-Adresse ist eine der nützlichsten Anwendungen von PHP. Es ist nicht schwer; aber es ist leicht, einen Fehler zu machen. In diesem Artikel werde ich Ihnen zeigen, wie häufige Fehler zu vermeiden, die entstehen, wenn die Inhalte eines Formulars mit PHP zu senden.

Anfangen

Um die Dinge einfach zu halten, werde ich ein Formular verwenden, mit nur drei Eingabefelder und einen Submit-Button. Die HTML sieht wie folgt aus:

Senden Sie E-Mail von einem Web-Formular mit PHP

Die Eröffnung

Tag enthält zwei Attribute: Methode und Aktion. Das Verfahren Attribut sagt der Browser, wie die Daten zu handhaben, wenn das Formular abgeschickt wird. Setzen Sie immer es für E-Mail zu schreiben. Einstellen der Formularinhalte an die URL, die schlecht aussieht und Risiken sensible Informationen ausgesetzt werden. Das action-Attribut teilt den Browser w hier die Formulardaten zur Verarbeitung zu senden. In diesem Beispiel bin das Senden ich es auf einer Seite namens acknowledge.php.

Das Skript, das die Form verarbeitet, verwendet das Namensattribut jeden Eingangselement um die Daten zu extrahieren. Verwenden Sie niemals Leerzeichen im Namen Attribut. Wenn Sie mehrere Wörter verwenden möchten, verwenden Sie Kamel Fall, wie Artikelname oder einen Unterstrich (product_name).

Erstellen der Seite für die Verarbeitung Skript

Sowie die Form der Datenverarbeitung, wird das Skript bestätigen, ob die Nachricht gesendet wurde. Erstellen einer Web-Seite mit dem folgenden HTML-Code in der Abschnitt, und speichern Sie es als acknowledge.php im selben Ordner wie die folgende Form:

Die Seite wird schließlich PHP-Logik verwenden, um die korrekte Nachricht angezeigt werden soll.

Sammeln der Daten aus dem Formular

Um die Daten aus einem Feld zuzugreifen, fügen Sie einfach den Namen Attribut in Anführungszeichen in einem Paar von eckigen Klammern nach $ _POST. Zum Beispiel enthält $ _ POST [ ‚email‘], um den Wert der Feld namens E-Mail.

Um das Formular zu verarbeiten, müssen Sie prüfen, ob sie eingereicht wurde, und dann bauen den Inhalt der E-Mail-Nachricht.

Der Name des Submit-Button in meiner Form ist senden, so bestätigt dies, dass $ _POST [ ‚senden‘] existiert, mit anderen Worten, die Form vorgelegt. Wenn Sie einen anderen Namen für den Absenden-Button verwenden, ändern zu lassen. PHP-Variablen sind case-sensitive: $ _POST oder $ _POST wird nicht funktionieren. Überprüfen Sie auch, dass das Öffnen und Schließen von Klammern Spiel (es gibt zwei Schließ Klammern vor dem Öffnen geschweifte Klammer).

Alle restlichen Code in diesem Abschnitt geht zwischen den geschweiften Klammern, und wird nur dann ausgeführt, wenn das Formular eingereicht wurde.

2. Erstellen Sie zwei Variablen für die Adresse, wo die E-Mail wird und das Thema der E-Mail gesendet werden:

3. Starten Sie den Aufbau der Körper der E-Mail-Nachricht auf der nächsten Zeile:

PHP verwendet einen Punkt (Punkt) Zeichenketten zu verbinden (Text) zusammen, so dass diese addiert den Wert des Namensfeld an den Buchstaben ‚Name:‘. Die Linie endet mit zwei Wagenrücklauf und Zeilenvorschubzeichen. Beachten Sie, dass die \ n \ r \ n in doppelten Anführungszeichen \ r ist. Wenn Sie einfache Anführungszeichen verwenden, werden Sie \ r \ n \ r \ n als normaler Text erhalten.

4. Der Körper der E-Mail-Nachricht muss eine einzelne Zeichenfolge sein, also die restlichen Felder hinzufügen, die mit einem Punkt wie dies das Gleichheitszeichen, indem vor:

Sie brauchen nicht die Zeilenumbrüche und Zeilenumbrüche nach dem letzten Feld.

5. Testen Sie Ihren Code so weit durch die folgende Zeile hinzufügen, den Körper der Nachricht angezeigt:

Senden Sie E-Mail von einem Web-Formular mit PHP

Abbildung 1: Die Inhalte aller Formularfelder wurden in eine einzelne Zeichenfolge verbunden sind.

Die Zeilenumbrüche und Zeilenumbrüche werden nicht angezeigt, aber Sie können ihre Existenz überprüfen, indem Sie den Quellcode in Ihrem Browser angezeigt wird.

Senden der E-Mail
  1. Löschen echo $ message; und ersetzen Sie es mit dem folgenden Code:

Diese drei Argumente an die E-Mail () Funktion: Die Adresse der E-Mail gesendet wird, die Betreffzeile, und die die Nachricht. Wenn die Funktion im Vorbeigehen die Nachricht an den MTA erfolgreich ist, wird $ Erfolg wahr sein.

2. Bearbeiten Sie den Textabschnitt der Seite wie diese die entsprechende Meldung angezeigt werden:

Senden Sie E-Mail von einem Web-Formular mit PHP

Wenn $ Erfolg gesetzt worden ist, und wenn es wahr ist, das „Danke“ Meldung angezeigt wird. Andernfalls wird die Fehlermeldung angezeigt. Die Fehlermeldung wird auch angezeigt, wenn jemand versucht, ohne Absenden des Formulars zu erreichen acknowledge.php.

Hinzufügen von E-Mail-Header

Auch wenn Sie eine E-Mail aus dem vorhandenen Skript erhalten haben, werden Sie fast sicherlich wollen es verbessern, indem E-Mail-Header hinzugefügt wird. Eines der nützlichsten Header macht es einfach an den Absender direkt antworten kann. Aber Sie müssen es tun, richtig Ihr Online-Formular in einen Spam-Relais zu vermeiden, drehen.

1. Erstellen Sie eine neue Zeile in Skript einfügen kurz vor der Linie, die die E-Mail sendet, und einen Header für die Absenderadresse wie folgt erstellen:

Ich habe nicht einen Wagenrücklauf und Zeilenende-Zeichen, da der letzte Header hinzugefügt wird, nur dann, wenn die Absender-E-Mail-Adresse gültig ist hinzugefügt.

3. böswillige Angreifer versuchen, den E-Mail-Bereich der Online-Formulare zu nutzen Dutzende von E-Mail-Adressen und Spam-Inhalten zu injizieren, so müssen Sie den Absender E-Mail Adresse validieren, bevor es auf die Header hinzufügen:

Die filter_input () Funktion nimmt drei Argumente. Die erste gibt an, dass die Eingabe durch das POST-Verfahren gesendet. Der zweite ist der Name des Eingabefeldes. Das dritte Argument gibt an, wie die Eingabe zu überprüfen. In diesem Fall wird bestätigt, dass es sich um eine einzelne E-Mail-Adresse ist. Die erste und dritte Argumente sind PHP Konstanten und die Groß- und Kleinschreibung.

Ist der Eingang wie eine gültige E-Mail-Adresse sieht nicht aus, gibt die Funktion false. Andernfalls gibt es die Adresse, die als $ E-Mail gespeichert wird. Die Reply-To-Header hinzugefügt wird nur, wenn die E-Mail-OK aussieht. Inbetriebnahme der Wagenrücklauf und Zeilenende-Zeichen am Anfang hat die gleiche Wirkung, wie es am Ende des vorherigen Header hinzugefügt wird.

4. Nachdem Sie nun die zusätzliche E-Mail-Header definiert haben, sie als das vierte Argument der Funktion mail () übergeben:

Überprüfen, ob die E-Mail von einer vertrauenswürdigen Quelle ist

Viele Hosting-Unternehmen erfordern Führen eines fünften Argument tomail (), um sicherzustellen, dass es aus einer vertrauenswürdigen Quelle stammt. Das ist Ihre eigene E-Mail-Adresse in Anführungszeichen und mit vorangestellter -f (Bindestrich-f). Wenn Sie noch keine E-Mail erhalten, nachdem die zusätzlichen Header hinzufügen, ändern Sie die Zeile, die die E-Mail wie folgt sendet (Ihre eigene E-Mail-Adresse in dem letzten Argumente verwendet wird):

Lernen Sie mehr über E-Mail und PHP

In diesem Artikel habe ich Ihnen gezeigt, wie Sie einen einfachen PHP-Skript erstellen Eingabe von einem Online-Formular einer E-Mail-Adresse zu senden, und wie der Absenders E-Mail in dem E-Mail-Header einbetten, ohne Ihre Form in einen Spam-Relais zu drehen.

Senden Sie E-Mail von einem Web-Formular mit PHP

In Verbindung stehende Artikel