SMTP -Server (Bibliothek) zum Empfangen von E -Mails, geschrieben in reinem PHP. Diese Bibliothek bietet eine Schnittstelle zum SMTP Server-Side-Protokoll mit PHP. Es erstellt für jede eingehende E -Mail ein ZendMailMessage -Klasse -Objekt und übergibt dieses Objekt an eine benutzerdefinierte PHP -Funktion zur weiteren Verarbeitung. Das Projekt befindet sich im Beta -Status, daher wird es nicht für die Produktionsanwendung empfohlen.
Das d in SMTPd steht für Daemon. Dieses Skript kann wie jeder andere Daemon -Prozess im Hintergrund ausgeführt werden. Es ist nicht zum Ausführen als Webapplication gedacht.
Ob Sie es glauben oder nicht, E -Mail ist immer noch die Killer -Funktion des Internets . Es gibt unzählige Projekte wie Phpmailer: Senden Sie programmgesteuert (mit PHP) E -Mails. Es gibt jedoch nicht so viele, um E -Mails von SMTP zu erhalten.
Mit dieser Oberfläche können Sie so etwas für Ihre App -Benutzer tun:
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
Dies ist nützlich, wenn Sie eine Messaging -Anwendung in PHP geschrieben haben, aber keine grafische Benutzeroberfläche dafür. Ihre grafische Benutzeroberfläche kann also jeder E -Mail -Client sein. Thunderbird zum Beispiel.
Das Projekt beschreibt wie in meinem Blog -Beitrag zur Zusammenarbeit mit Open -Source -Software.
ZendMail durch eine bessere Lösung. Die bevorzugte Installationsmethode erfolgt über Packagist und Komponist. Führen Sie den folgenden Befehl aus, um das Paket zu installieren, und fügen Sie es für Composer.json hinzu:
composer require thefox/smtpd Im Moment akzeptiert der Server alle eingehenden E -Mails. Sie entscheiden, was mit eingehenden E-Mails passiert, indem Sie dem Server ( $server->eventAdd($event) ) Event hinzufügen. Der Server kann bestimmte Ereignisse verarbeiten. Jedes Ereignis wird auf einem bestimmten Auslöser ausgeführt. Auch wenn Sie dem Server keine Ereignisse hinzufügen, akzeptiert es alle eingehenden E -Mails.
Im Moment gibt es zwei Ereignisauslöser.
TRIGGER_NEW_MAIL : wird ausgelöst, wenn ein Client eine neue E -Mail übertragen hat.TRIGGER_AUTH_ATTEMPT : wird ausgelöst, wenn ein Client authentifiziert wird. Gibt einen Booleschen aus der Rückruffunktion zurück, ob die Authentifizierung erfolgreich war oder nicht. In vollständigen Beispielen finden Sie auch die Datei example.php .
$ 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!
}