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!

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

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-

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

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' =>

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é

Alipay Php ...

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

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.


Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

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

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Version Mac de WebStorm
Outils de développement JavaScript utiles

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

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux