suchen
HeimBackend-EntwicklungPHP-TutorialRohrleitungs -E -Mails an eine Laravel -Bewerbung

Piping Emails to a Laravel Application

Kernpunkte

    Die Handwerksanerin für das Befehlszeilenwerkzeug von
  • Laravel kann erweitert werden, um RAW -E -Mails zu erhalten und in Ihrer Bewerbung zu verwenden. Dies beinhaltet die Erstellung eines neuen Befehls wie php artisan email:parse, der in Artisan registriert und ausgeführt werden kann, um die ursprüngliche Nachricht aus dem IO -Stream abzurufen.
  • Verwenden Sie php-mime-mail-parser usw., um die ursprüngliche Nachricht in einen separaten Abschnitt aufzulösen. Dies ermöglicht das Abrufen von Header wie das Thema und den Körper der E -Mail. Die Parsen -Mail kann dann leicht in der Datenbank gespeichert werden.
  • Diese Einstellung kann auch alle Anhänge in der Nachricht verarbeiten. Nach dem Abrufen von Anhängen können Sie ein Dateisystemobjekt erstellen, um die Datei auf dem Server zu speichern. Abhängig vom verwendeten Tool oder dem verwendeten E -Mail -Server können verschiedene Methoden verwendet werden, um E -Mails an die Anwendung zu liefern.

Einführung

Sie sehen dies häufig in Projekten für Projektmanagement oder Support -Management: Sie können auf E -Mails antworten und es wird automatisch in Ihrer Webanwendung angezeigt. Diese Tools können diese E -Mails direkt in ihre Systeme importieren.

In diesem Artikel lernen wir, wie Sie E -Mails an unsere Laravel 4 -Anwendung übermitteln. Dazu begannen wir mit einem brandneuen Laravel 4 -Projekt, das wie unten gezeigt über Komponisten installiert wurde.

composer create-project laravel/laravel your-project-name --prefer-dist

Erstellen Sie Artisan -Befehl

Um E -Mails in unsere Bewerbung importieren zu können, müssen wir die E -Mails über die Befehlszeile an unsere Bewerbung liefern. Glücklicherweise verfügt Laravel über ein Befehlszeilen -Tool namens Artisan, das mehrere Aufgaben ausführen kann. Um eine Liste aller Aufgaben anzuzeigen, die Artisan ausführen kann, können Sie in dem Stammverzeichnis Ihres Projekts php artisan list ausführen.

In diesem Fall möchten wir, dass es eine ganz bestimmte Aufgabe ausführt: Akzeptieren Sie die ursprüngliche E -Mail und verwenden Sie sie in unserer Anwendung. Leider ist dies keiner der grundlegenden Merkmale, die sich mit Artisan handeln kann. Wir können es leicht mit dem neuen Befehl erweitern: php artisan email:parse. Wir werden dann Artisan starten und in diesem Fall eine bestimmte Aufgabe namens email:parse ausführen.

Unser erster Schritt ist, diesen Befehl zu erstellen. Sie können einen neuen Befehl über den eigenen Befehl von Artisan erstellen, um einen neuen Befehl zu erstellen. Führen Sie einfach den folgenden Befehl im Stammverzeichnis des Projekts aus:

php artisan command:make EmailParserCommand

Wenn alles gut läuft, finden Sie jetzt eine Datei mit dem Namen app/commands im Verzeichnis EmailParserCommand.php. Öffnen Sie es in Ihrem bevorzugten Editor und sehen Sie sich die Eigenschaften $name und $description an. Wir können es nach Bedarf anpassen. Indem der Befehl einen klaren Namen und eine klare Beschreibung gibt, wird der Befehl in der Handwerksbefehlsliste gut aufgeführt.

Zum Beispiel habe ich es dazu geändert:

/**
 * 控制台命令名称。
 *
 * @var string
 */
protected $name = 'email:parse';

/**
 * 控制台命令描述。
 *
 * @var string
 */
protected $description = '解析传入的电子邮件。';

Registrierung der Reihenfolge

Wenn wir in der Stammin unseres Projekts php artisan email:parse ausführen, erhalten Sie eine Nachricht, dass dieser Befehl noch nicht registriert wurde. Unser nächster Schritt besteht darin, sicherzustellen, dass dieser Befehl in Artisan registriert ist. Öffnen wir die Datei app/start/artisan.php und fügen Sie Artisan::add(new EmailParserCommand); zum Ende der Datei hinzu, um unseren neu erstellten Befehl zu registrieren. Wir können jetzt den Befehl list erneut ausführen, um den von uns aufgeführten email:parse -Fehl anzuzeigen. Bitte beachten Sie, dass der Name und die Beschreibung, die Sie gerade ausgefüllt haben, hier angezeigt werden.

Original -E -Mail

abrufen

Wenn ein Befehl durch Handwerker aufgerufen wird, ruft er immer die fire -Methode auf. Zunächst müssen wir hier unsere E -Mail -Parsen hinzufügen. Die E -Mail befindet sich derzeit in unserem IO -Stream und wir können sie von php://stdin abrufen. Wir öffnen diesen IO -Stream und sammeln eine kleine Anzahl von E -Mails, bis wir den gesamten Stream lesen.

composer create-project laravel/laravel your-project-name --prefer-dist

Die E -Mail, die an unseren Handwerksbefehl gesendet wird, befindet sich jetzt in der Variablen $rawEmail. Es ist die gesamte E -Mail mit Header, Körper und Anhängen.

Zeitplan -E -Mail

Wir haben jetzt die ursprüngliche E -Mail, aber ich bevorzuge die E -Mail in mehrere Teile. Ich möchte Header wie Themen und E -Mail -Körper abrufen. Wir können unseren eigenen Code schreiben, um alle diese Teile zu teilen, aber jemand hat ein Paket erstellt, das wir in unserer Anwendung verwenden können. Dieses Paket kann unsere gesamte E -Mail in logische Teile unterteilen. Fügen Sie der folgenden Zeile Ihrer composer.json -Datei hinzu und führen Sie composer update

aus
php artisan command:make EmailParserCommand

Jetzt müssen wir sicherstellen app/command/EmailParserCommand.php

Jetzt können wir die ursprüngliche E -Mail in separate Abschnitte analysieren. Fügen Sie die folgenden Codezeilen zum Ende der
/**
 * 控制台命令名称。
 *
 * @var string
 */
protected $name = 'email:parse';

/**
 * 控制台命令描述。
 *
 * @var string
 */
protected $description = '解析传入的电子邮件。';
-Methode hinzu.

fire

Wir erstellen zuerst einen neuen Parser. Als nächstes setzen wir die ursprüngliche E -Mail in den Text des Parsers und nennen schließlich verschiedene Methoden, um die Daten vom Kopf- oder Körper zu erhalten.
/**
 * 执行控制台命令。
 *
 * @return void
 */
public function fire()
{
    // 从 stdin 读取
    $fd = fopen("php://stdin", "r");
    $rawEmail = "";
    while (!feof($fd)) {
        $rawEmail .= fread($fd, 1024);
    }
    fclose($fd);
}

Sie können jetzt problemlos E -Mails in Ihrer Datenbank speichern. Wenn Sie beispielsweise eine E -Mail -Entität haben, können Sie die E -Mail in Ihrer Datenbank wie folgt speichern:

"messaged/php-mime-mail-parser": "dev-master"
Verarbeitungsanhänge

Möglicherweise möchten Sie sogar alle Anhänge speichern, die Ihrer E -Mail auf Ihrem Server angehängt sind. Die E -Mail -Parser -Klasse kann alle verfügbaren Anhänge verarbeiten. Fügen Sie zunächst erneut die folgenden Zeilen an die Oberseite der

-Klasse hinzu.

app/command/EmailParserCommand.php

Jetzt müssen wir unsere
use MimeMailParser\Parser;
-Methode erweitern:

composer create-project laravel/laravel your-project-name --prefer-dist

Mal sehen, was dieser Teil tatsächlich tut. Die erste Zeile holt den Anhang aus der E -Mail ab. $attachments Eine Variable ist ein Array von Anhangsobjekten. Als nächstes stellen wir sicher, dass ein neues Dateisystemobjekt erstellt wird, das das Speichern der Datei auf unserem Server verarbeitet. Dann fangen wir an, alle Anhänge zu iterieren. Wir nennen die put -Methode des Dateisystems Objekt, das den Pfad und den Inhalt der Datei akzeptiert. In diesem Fall möchten wir die Datei dem Verzeichnis public/uploads hinzufügen und den Dateinamen verwenden, den der Anhang tatsächlich hat. Der zweite Parameter ist der Inhalt der tatsächlichen Datei.

Das ist es! Ihre Dateien werden jetzt in public/uploads gespeichert. Stellen Sie einfach sicher, dass Ihr Mailserver dieses Verzeichnis tatsächlich zu Dateien hinzufügen kann, indem Sie die richtigen Berechtigungen festlegen.

Konfigurieren Sie unseren Mailserver

Bisher haben wir die gesamte App zum Abrufen, Teilen und Speichern unserer E -Mails vorbereitet. Wenn Sie jedoch nicht wissen, wie Sie die E -Mail tatsächlich an Ihren neu erstellten Kunsthandwerksbefehl senden sollen, ist dieser Code nutzlos.

Im Folgenden finden Sie verschiedene Möglichkeiten, Ihre E -Mail an Ihre Anwendung zu liefern, abhängig vom Tool oder dem von Ihnen verwendeten Mailserver. Zum Beispiel möchte ich support@peternijssen.nl an meine App weiterleiten, die sich bei /var/www/supportcenter befindet. Beachten Sie, dass ich in den tatsächlichen Befehlen, die Sie unten sehen werden, jedes Mal --env=local hinzugefügt habe, um sicherzustellen, dass Artisan wie wir auf der Entwicklungsmaschine läuft. Wenn Sie sich in einer Produktionsumgebung befinden, können Sie diesen Abschnitt löschen.

cpanel

Wenn Sie CPANEL verwenden, können Sie im allgemeinen Menü auf die Weiterleitung klicken. Fügen Sie einen neuen Spediteur hinzu und definieren Sie die Adresse, die Sie an Ihre Bewerbung weiterleiten möchten. Klicken Sie auf Erweiterte Einstellungen und wählen Sie die Option Pipe to Programs aus. Im Eingangsfeld können Sie die folgende Zeile einfügen:

php artisan command:make EmailParserCommand

Beachten Sie, dass CPanel einen Pfad relativ zu Ihrem Heimverzeichnis verwendet.

exim

Wenn auf Exim die Datei /etc/valiases/peternijssen.nl öffnen. Stellen Sie sicher, dass in dieser Datei die folgenden Zeilen vorhanden sind:

/**
 * 控制台命令名称。
 *
 * @var string
 */
protected $name = 'email:parse';

/**
 * 控制台命令描述。
 *
 * @var string
 */
protected $description = '解析传入的电子邮件。';

Ausführen newaliases, um die Alias ​​-Datenbank wieder aufzubauen.

postfix

Auf Postfix stellen Sie sicher, dass die folgenden Zeilen in Ihrer /etc/postfix/main.cf -Datei vorhanden sind und nicht kommentiert werden:

/**
 * 执行控制台命令。
 *
 * @return void
 */
public function fire()
{
    // 从 stdin 读取
    $fd = fopen("php://stdin", "r");
    $rawEmail = "";
    while (!feof($fd)) {
        $rawEmail .= fread($fd, 1024);
    }
    fclose($fd);
}

Wenn Sie die Datei ändern müssen, laden Sie Postfix neu, indem Sie service postfix reload ausgeführt werden.

Wir können jetzt einen neuen Alias ​​erstellen, der an unsere Bewerbung übergeben wird. Öffnen Sie /etc/aliases und fügen Sie die folgende Zeile hinzu:

"messaged/php-mime-mail-parser": "dev-master"

Ausführen newaliases, um die Alias ​​-Datenbank wieder aufzubauen.

sendmail

Mit Sendmail sollten Sie zunächst einen Alias ​​in der Datei /etc/aliases erstellen:

use MimeMailParser\Parser;

Ausführen newaliases, um die Alias ​​-Datenbank wieder aufzubauen. Stellen Sie als nächstes sicher, dass der Chmod der Artisan -Datei 755 ist, damit sie ausgeführt werden kann.

Symlink die handwerkliche Datei und Php selbst zu /etc/smrsh

composer create-project laravel/laravel your-project-name --prefer-dist

qmail

Abhängig von Ihrer Installation müssen Sie sicherstellen, dass die folgenden Dateien vorhanden sind:

php artisan command:make EmailParserCommand

oder:

/**
 * 控制台命令名称。
 *
 * @var string
 */
protected $name = 'email:parse';

/**
 * 控制台命令描述。
 *
 * @var string
 */
protected $description = '解析传入的电子邮件。';

Öffnen Sie eine Datei und fügen Sie die folgende Zeile als Inhalt hinzu:

/**
 * 执行控制台命令。
 *
 * @return void
 */
public function fire()
{
    // 从 stdin 读取
    $fd = fopen("php://stdin", "r");
    $rawEmail = "";
    while (!feof($fd)) {
        $rawEmail .= fread($fd, 1024);
    }
    fclose($fd);
}

Schlussfolgerung

Jedes Framework mit verfügbaren Befehlszeilen -Tools kann Ihre E -Mails verarbeiten. Der hier bereitgestellte Code ist nur ein grundlegendes Setup. Abhängig von Ihrem Projekt möchten Sie möglicherweise nur zulassen, dass bestimmte E -Mail -Adressen E -Mails an Ihre App senden. Stellen Sie vor dem Übergeben an Ihre Bewerbung sicher, dass Sie Ihre E -Mails in Tools wie Postfix gefiltert haben.

Wenn Sie eine Art Ticketing -System verwenden möchten, können Sie problemlos versuchen, eine Support -Ticket -ID aus einem E -Mail -Betreff zu extrahieren und auf der E -Mail basierend auf dieser ID mehrere verschiedene Aktionen auszuführen.

Halten Sie die Aufmerksamkeit auf die Protokolldateien des Mailservers. Es gibt Ihnen einige Tipps, wenn die tatsächliche Pipeline in der Lösung der Auflösung fehlschlägt.

(Aus Platzbeschränkungen wird ein Teil der FAQs weggelassen. Der ursprüngliche FAQs -Inhalt hängt schwach zum Thema des Artikels zusammen, und ein Teil des Inhalts wird mit dem Inhalt des Artikels dupliziert, daher kein Pseudo -Originalverarbeitung wird durchgeführt.)

Das obige ist der detaillierte Inhalt vonRohrleitungs -E -Mails an eine Laravel -Bewerbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Wie erstellen und verwenden Sie eine Schnittstelle in PHP?Wie erstellen und verwenden Sie eine Schnittstelle in PHP?Apr 30, 2025 pm 03:40 PM

Der Artikel erläutert, wie Schnittstellen in PHP erstellt, implementiert und verwendet werden und sich auf ihre Vorteile für die Organisation von Code und die Wartbarkeit konzentriert.

Was ist der Unterschied zwischen Crypt () und Passage_hash ()?Was ist der Unterschied zwischen Crypt () und Passage_hash ()?Apr 30, 2025 pm 03:39 PM

In dem Artikel werden die Unterschiede zwischen CryPT () und Passage_hash () in PHP für Passwort -Hashing erörtert und sich auf ihre Implementierung, Sicherheit und Eignung für moderne Webanwendungen konzentriert.

Wie können Sie Cross-Site Scripting (XSS) in PHP verhindern?Wie können Sie Cross-Site Scripting (XSS) in PHP verhindern?Apr 30, 2025 pm 03:38 PM

In Artikel werden in PHP durch Eingabevalidierung, Ausgabecodierung und Verwendung von Tools wie OWASP ESAPI und HTML-Reinigungsmittel die Verhinderung des Cross-Site-Skripts (XSS) erläutert.

Was ist Autoloading in PHP?Was ist Autoloading in PHP?Apr 30, 2025 pm 03:37 PM

Das Autolading in PHP lädt bei Bedarf die Klassendateien automatisch und verbessert die Leistung durch Reduzierung des Speichergebrauchs und Verbesserung der Codeorganisation. Zu den Best Practices gehört die Verwendung von PSR-4 und das organisierende Code effektiv.

Was sind PHP -Streams?Was sind PHP -Streams?Apr 30, 2025 pm 03:36 PM

PHP -Streams vereinheitlichen die Handhabung von Ressourcen wie Dateien, Netzwerkhöhlen und Komprimierungsformaten über eine konsistente API, die Komplexität abstrahieren und die Flexibilität und Effizienz der Code verbessern.

Wie hoch ist die maximale Größe einer Datei, die mit PHP hochgeladen werden kann?Wie hoch ist die maximale Größe einer Datei, die mit PHP hochgeladen werden kann?Apr 30, 2025 pm 03:35 PM

In dem Artikel wird das Verwalten von Datei -Upload -Größen in PHP erläutert, wobei der Schwerpunkt auf der Standardgrenze von 2 MB und der Erhöhung der PHP.ini -Einstellungen liegt.

Was sind nullbare Typen in PHP?Was sind nullbare Typen in PHP?Apr 30, 2025 pm 03:34 PM

In dem Artikel werden nullbare Typen in PHP erörtert, die in PHP 7.1 eingeführt wurden und ermöglicht, dass Variablen oder Parameter entweder ein angegebener Typ oder ein Null sind. Es zeigt Vorteile wie eine verbesserte Lesbarkeit, Typsicherheit und explizite Absicht und erklärt, wie man deklariert

Was ist der Unterschied zwischen den Funktionen von UnSet () und Unlink ()?Was ist der Unterschied zwischen den Funktionen von UnSet () und Unlink ()?Apr 30, 2025 pm 03:33 PM

Der Artikel erörtert die Unterschiede zwischen UNSET () und Unlink () in der Programmierung und konzentriert sich auf ihre Zwecke und Anwendungsfälle. UnSet () entfernt Variablen aus dem Speicher, während Unlink () Dateien aus dem Dateisystem löscht. Beide sind für Effec von entscheidender Bedeutung

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.