SMTP Server (Library) pour recevoir des e-mails, écrits en php pur. Cette bibliothèque fournit une interface au protocole côté serveur SMTP avec PHP. Il crée un objet de classe ZendMailMessage pour chaque e-mail entrant et remet cet objet à une fonction PHP personnalisée pour un traitement ultérieur. Le projet est en bêta, il n'est donc pas recommandé pour une utilisation en production.
Le d en SMTPd signifie Daemon. Ce script peut s'exécuter en arrière-plan comme tout autre processus de démon. Il n'est pas destiné à fonctionner comme une application Web.
Croyez-le ou non, le courrier électronique est toujours la fonctionnalité de tueur d'Internet . Il y a des tonnes de projets comme PHPMailer: pour envoyer des e-mails par les e-mails (avec PHP). Mais il n'y en a pas beaucoup pour recevoir des e-mails de SMTP.
Avec cette interface, vous pouvez faire quelque chose comme ça pour les utilisateurs de votre application:
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
Ceci est utile lorsque vous avez une application de messagerie écrite en PHP mais pas d'interface utilisateur graphique pour elle. Ainsi, votre interface utilisateur graphique peut être n'importe quel client de messagerie. Thunderbird par exemple.
Le projet décrit comme décrit dans mon article de blog sur la collaboration des logiciels open source.
ZendMail par une meilleure solution. La méthode d'installation préférée est via Packagist et compositeur. Exécutez la commande suivante pour installer le package et ajoutez-le comme exigence à Composer.json:
composer require thefox/smtpd Pour le moment, le serveur accepte tous les e-mails entrants. Vous décidez ce qui se passe avec les e-mails entrants en ajoutant Event S à l'objet Server ( $server->eventAdd($event) ). Le serveur peut gérer certains événements. Chaque événement sera exécuté sur un certain déclencheur. Même si vous n'ajoutez aucun événement au serveur, il accepte tous les e-mails entrants.
Pour le moment, il y a deux déclencheurs d'événements.
TRIGGER_NEW_MAIL : sera déclenché lorsqu'un client a terminé la transmission d'un nouvel e-mail.TRIGGER_AUTH_ATTEMPT : sera déclenché lorsqu'un client souhaite s'authentifier. Renvoyez un booléen de la fonction de rappel, que l'authentification soit réussie ou non. Voir aussi le fichier example.php pour des exemples complets.
$ server = new Server (...);
$ event = new Event (Event:: TRIGGER_NEW_MAIL , null , function ( Event $ event , $ from , $ rcpts , $ mail ){
// Do stuff: handle email, ...
});
$ server -> addEvent ( $ event );
$ server -> loop (); $ server = new Server (...);
$ event = new Event (Event:: TRIGGER_AUTH_ATTEMPT , null , function ( Event $ event , $ type , $ credentials ): bool {
// Do stuff: Check credentials against database, ...
return true ;
});
$ server -> addEvent ( $ event );
$ server -> loop (); $ server = new Server (...);
// Set up server here.
// Add Events, etc, ...
while ( myApplicationRuns ()){
// Do stuff your application needs.
// ...
// Run main SMTPd loop, once.
$ server -> run ();
usleep ( 10000 ); // Never run a main thread loop without sleep. Never!
}