Servidor SMTP (biblioteca) para recibir correos electrónicos, escritos en PHP puro. Esta biblioteca proporciona una interfaz al protocolo del lado del servidor SMTP con PHP. Crea un objeto de clase ZendMailMessage para cada correo electrónico entrante y entrega este objeto a una función PHP personalizada para su posterior procesamiento. El proyecto está en estado beta, por lo que no se recomienda para el uso de producción.
El d en SMTPd significa Daemon. Este script puede ejecutarse en segundo plano como cualquier otro proceso de demonio. No está destinado a ejecutarse como una aplicación web.
Lo creas o no, el correo electrónico sigue siendo la característica asesina de Internet . Hay toneladas de proyectos como PHPMailer: para enviar correos electrónicos programáticamente (con PHP). Pero no hay tantos para recibir correos electrónicos de SMTP.
Con esta interfaz puede hacer algo como esto para los usuarios de su aplicación:
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
Esto es útil cuando tiene una aplicación de mensajería escrita en PHP pero no hay interfaz gráfica de usuario para ella. Por lo tanto, su interfaz gráfica de usuario puede ser cualquier cliente de correo electrónico. Thunderbird, por ejemplo.
El proyecto describe como se describe en mi publicación de blog sobre la colaboración de software de código abierto.
ZendMail con una mejor solución. El método de instalación preferido es a través de Packagist y Composer. Ejecute el siguiente comando para instalar el paquete y agréguelo como un requisito para composer.json:
composer require thefox/smtpd Por el momento, el servidor acepta todos los correos electrónicos entrantes. Usted decide qué sucede con los correos electrónicos entrantes al agregar Event al objeto Server ( $server->eventAdd($event) ). El servidor puede manejar ciertos eventos. Cada evento se ejecutará en un determinado desencadenante. Incluso si no agrega ningún evento al servidor, acepta todos los correos electrónicos entrantes.
En este momento hay dos desencadenantes de eventos.
TRIGGER_NEW_MAIL : se activará cuando un cliente haya terminado de transmitir un nuevo correo electrónico.TRIGGER_AUTH_ATTEMPT : se activará cuando un cliente quiera autenticarse. Devuelva un booleano de la función de devolución de llamada si la autenticación fue exitosa o no. Vea también el archivo example.php para ejemplos completos.
$ 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!
}