recherche
Maisondéveloppement back-endtutoriel phpPiping des e-mails à une application Laravel

Piping Emails to a Laravel Application

Points de base

  • L'artisan de l'outil de ligne de commande de Laravel peut être étendu pour recevoir du courrier brut et l'utiliser dans votre application. Cela implique la création d'une nouvelle commande, telle que php artisan email:parse, qui peut être enregistrée et exécutée dans Artisan pour récupérer le message original du flux IO.
  • Utiliser php-mime-mail-parser etc. pour résoudre le message d'origine dans une section distincte. Cela permet de récupérer des en-têtes tels que le sujet et le corps de l'e-mail. Le courrier analysé peut ensuite être facilement stocké dans la base de données.
  • Ce paramètre peut également gérer toutes les pièces jointes dans le message. Après la récupération des pièces jointes, vous pouvez créer un objet système de fichiers pour enregistrer le fichier sur le serveur. De plus, selon l'outil ou le serveur de messagerie utilisé, différentes méthodes peuvent être utilisées pour livrer le courrier à l'application.

Introduction

Vous le verrez souvent dans la gestion de projet ou les outils de gestion du support: vous pouvez répondre aux e-mails et il apparaîtra automatiquement dans votre application Web. Ces outils peuvent importer ces e-mails directement dans leurs systèmes.

Dans cet article, nous apprendrons à transmettre des e-mails à notre application Laravel 4. Pour ce faire, nous avons commencé avec un tout nouveau projet Laravel 4 qui a été installé via le compositeur comme indiqué ci-dessous.

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

Créer une commande artisanale

Afin de pouvoir importer des e-mails dans notre application, nous devons transmettre les e-mails à notre application via la ligne de commande. Heureusement, Laravel a un outil de ligne de commande appelé Artisan capable d'effectuer plusieurs tâches. Pour afficher une liste de toutes les tâches que Artisan peut exécuter, vous pouvez exécuter php artisan list dans le répertoire racine de votre projet.

Dans ce cas, nous voulons qu'il effectue une tâche très spécifique: acceptez l'e-mail d'origine et l'utilisez dans notre application. Malheureusement, ce n'est pas l'une des caractéristiques de base que l'artisan peut gérer. Nous pouvons facilement l'étendre avec la nouvelle commande: php artisan email:parse. Nous allons ensuite commencer Artisan et effectuer une tâche spécifique, appelée email:parse dans ce cas.

Notre première étape consiste à créer cette commande. Vous pouvez créer une nouvelle commande via la propre commande d'Artisan pour créer une nouvelle commande. Exécutez simplement la commande suivante dans le répertoire racine du projet:

php artisan command:make EmailParserCommand

Si tout se passe bien, vous trouverez maintenant un fichier nommé app/commands dans le répertoire EmailParserCommand.php. Ouvrez-le dans votre éditeur préféré et affichez les propriétés $name et $description. Nous pouvons le personnaliser au besoin. En lui donnant un nom et une description clairs, la commande sera bien répertoriée dans la liste des commandes artisanales.

Par exemple, je l'ai changé pour ceci:

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

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

Enregistrement de l'ordre

Lorsque nous exécutons php artisan email:parse à la racine de notre projet, vous recevrez un message indiquant que cette commande n'a pas encore été enregistrée. Notre prochaine étape consiste à nous assurer que cette commande est enregistrée dans Artisan. Ouvrez le fichier app/start/artisan.php et ajoutons Artisan::add(new EmailParserCommand); à la fin du fichier pour enregistrer notre commande nouvellement créée. Nous pouvons maintenant exécuter à nouveau la commande list pour afficher la commande email:parse que nous avons répertoriée. Veuillez noter que le nom et la description que vous venez de remplir seront affichés ici.

Récupérer le courrier électronique original

Chaque fois qu'une commande est appelée via Artisan, il appelle toujours la méthode fire. Donc, initialement, nous devons ajouter notre analyse des e-mails ici. L'e-mail est actuellement dans notre flux IO et nous pouvons le récupérer de php://stdin. Nous ouvrons ce flux IO et collectons une petite quantité d'e-mails jusqu'à ce que nous lisons le flux entier.

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

l'e-mail envoyé à notre commande artisan est maintenant situé dans la variable $rawEmail. Il s'agit de l'ensemble de l'e-mail, contenant l'en-tête, le corps et toutes les pièces jointes.

Planifiez le courrier électronique

Nous avons maintenant l'e-mail d'origine, mais je préfère diviser l'e-mail en plusieurs parties. Je veux récupérer des en-têtes comme des sujets et un corps par e-mail. Nous pouvons écrire notre propre code pour diviser toutes ces parties, mais quelqu'un a créé un package que nous pouvons utiliser dans notre application. Ce package est capable de diviser l'intégralité de notre e-mail en parties logiques. Ajoutez la ligne suivante à votre fichier composer.json et exécutez composer update

php artisan command:make EmailParserCommand

Maintenant, nous devons nous assurer que nous pouvons réellement utiliser ce package dans nos commandes, nous ouvrons donc notre app/command/EmailParserCommand.php à nouveau et ajouter les lignes suivantes en haut:

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

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

Maintenant, nous pouvons analyser l'e-mail d'origine en sections distinctes. Ajoutez les lignes de code suivantes à la fin de la méthode fire.

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

Nous créons d'abord un nouvel analyseur. Ensuite, nous définissons l'e-mail d'origine sur le texte de l'analyseur, et enfin, nous appelons différentes méthodes pour obtenir les données de l'en-tête ou du corps.

Vous pouvez désormais stocker facilement les e-mails dans votre base de données. Par exemple, si vous avez une entité par e-mail, vous pouvez enregistrer l'e-mail dans votre base de données comme ceci:

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

Traitement des pièces jointes

Vous pouvez même stocker toutes les pièces jointes jointes à votre e-mail sur votre serveur. La classe d'analyse par e-mail peut gérer toutes les pièces jointes disponibles. Tout d'abord, ajoutez à nouveau les lignes suivantes en haut de la classe app/command/EmailParserCommand.php.

use MimeMailParser\Parser;

Maintenant, nous devons étendre notre méthode fire:

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

Voyons ce que fait cette partie. La première ligne récupère la pièce jointe de l'e-mail. $attachments Une variable est un tableau d'objets d'attachement. Ensuite, nous nous assurons de créer un nouvel objet de système de fichiers qui gérera la sauvegarde du fichier sur notre serveur. Ensuite, nous commençons à itérus sur tous les accessoires. Nous appelons la méthode put de l'objet de système de fichiers, qui accepte le chemin d'accès et le contenu du fichier. Dans ce cas, nous voulons ajouter le fichier au répertoire public/uploads et utiliser le nom de fichier que la pièce jointe a réellement. Le deuxième paramètre est le contenu du fichier réel.

c'est tout! Vos fichiers sont maintenant stockés dans public/uploads. Assurez-vous simplement que votre serveur de messagerie peut réellement ajouter des fichiers à ce répertoire en définissant les autorisations correctes.

Configurez notre serveur de messagerie

Jusqu'à présent, nous avons préparé l'ensemble de l'application pour récupérer, diviser et enregistrer nos e-mails. Cependant, si vous ne savez pas comment envoyer l'e-mail à votre commande Artisan nouvellement créée, ce code est inutile.

Ci-dessous, vous trouverez différentes façons de livrer des e-mails à votre application, selon l'outil ou le serveur de messagerie que vous utilisez. Par exemple, je souhaite transmettre support@peternijssen.nl à mon application, qui est située à /var/www/supportcenter. Notez que dans les commandes réelles que vous verrez ci-dessous, j'ai ajouté --env=local à chaque fois pour m'assurer que Artisan fonctionne comme nous le faisons sur la machine de développement. Si vous êtes dans un environnement de production, vous pouvez supprimer cette section.

cpanel

Si vous utilisez CPanel, vous pouvez cliquer sur le transfert dans le menu général. Ajoutez un nouveau transfert et définissez l'adresse que vous souhaitez transmettre à votre application. Cliquez sur Paramètres avancés et sélectionnez l'option Pipe to Programs. Dans le champ de saisie, vous pouvez insérer la ligne suivante:

php artisan command:make EmailParserCommand

Notez que CPanel utilise un chemin par rapport à votre répertoire domestique.

exim

Si sur exim, ouvrez le fichier /etc/valiases/peternijssen.nl. Assurez-vous que les lignes suivantes existent dans ce fichier:

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

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

Exécutez newaliases pour reconstruire la base de données Alias.

postfix

Sur PostFix, assurez-vous qu'avant de continuer, les lignes suivantes existent dans votre fichier /etc/postfix/main.cf et ne sont pas commentées:

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

Si vous devez modifier le fichier, rechargez Postfix en exécutant service postfix reload.

Nous pouvons maintenant créer un nouvel alias qui sera transmis à notre application. Ouvrez /etc/aliases et ajoutez la ligne suivante:

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

Exécutez newaliases pour reconstruire la base de données Alias.

sendmail

Avec Sendmail, vous devez d'abord créer un alias dans le fichier /etc/aliases:

use MimeMailParser\Parser;

Exécutez newaliases pour reconstruire la base de données Alias. Ensuite, assurez-vous que le Chmod du fichier artisan est de 755 afin qu'il puisse être exécuté.

Enfin, systémosez le fichier artisan et php lui-même à /etc/smrsh

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

qmail

Selon votre installation, vous devez vous assurer que les fichiers suivants existent:

php artisan command:make EmailParserCommand

ou:

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

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

Ouvrez n'importe quel fichier et ajoutez la ligne suivante en tant que contenu:

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

Conclusion

Tout framework avec les outils de ligne de commande disponibles est en mesure de traiter vos e-mails. Le code fourni ici n'est qu'une configuration de base. Selon votre projet, vous souhaiterez peut-être simplement autoriser certaines adresses e-mail pour envoyer des e-mails à votre application. Avant de passer à votre demande, assurez-vous d'avoir filtré vos e-mails dans des outils comme Postfix.

Si vous souhaitez utiliser une sorte de système de billetterie, vous pouvez facilement essayer d'extraire un ID de ticket d'assistance à partir d'un sujet de messagerie et effectuer plusieurs actions différentes sur l'e-mail en fonction de cet ID.

Gardez l'attention aux fichiers journaux du serveur de messagerie. Il vous donne quelques conseils lorsque le pipeline réel échoue dans la façon de le résoudre.

(En raison des limites de l'espace, une partie de la FAQ est omise. Le contenu FAQ d'origine est faiblement lié au sujet de l'article, et une partie du contenu est dupliquée avec le contenu de l'article, donc pas de pseud -Les traitements originaux sont effectués.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
PHP Logging: meilleures pratiques pour l'analyse du journal PHPPHP Logging: meilleures pratiques pour l'analyse du journal PHPMar 10, 2025 pm 02:32 PM

La journalisation PHP est essentielle pour surveiller et déboguer les applications Web, ainsi que pour capturer des événements critiques, des erreurs et un comportement d'exécution. Il fournit des informations précieuses sur les performances du système, aide à identifier les problèmes et prend en charge le dépannage plus rapide

Travailler avec les données de session Flash dans LaravelTravailler avec les données de session Flash dans LaravelMar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API RESTCurl dans PHP: Comment utiliser l'extension PHP Curl dans les API RESTMar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Misque de réponse HTTP simplifié dans les tests LaravelMisque de réponse HTTP simplifié dans les tests LaravelMar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

12 meilleurs scripts de chat PHP sur Codecanyon12 meilleurs scripts de chat PHP sur CodecanyonMar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Expliquez le concept de liaison statique tardive en PHP.Expliquez le concept de liaison statique tardive en PHP.Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées.Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées.Mar 28, 2025 pm 05:12 PM

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux