smtpd
1.0.0
SMTP服务器(库),用于接收用纯PHP编写的电子邮件。该库提供了带有PHP的SMTP服务器端协议的接口。它为每个传入的电子邮件创建一个ZendMailMessage类对象,并将此对象交给自定义PHP函数以进行进一步处理。该项目处于Beta状态,因此不建议用于生产使用。
SMTPd中的d代表守护程序。该脚本可以像其他任何守护程序过程一样在后台运行。这并不是要作为网络应用程序运行。
信不信由你,电子邮件仍然是互联网的杀手级功能。有很多项目,例如phpmailer:以编程方式发送电子邮件(带有PHP)。但是,收到SMTP的电子邮件并不多。
使用此界面,您可以为您的应用程序用户做这样的事情:
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
当您使用PHP编写消息传递应用程序,但没有图形用户界面时,这很有用。因此,您的图形用户界面可以是任何电子邮件客户端。例如,雷鸟。
该项目概述了我关于开源软件协作的博客文章中所述。
ZendMail 。 首选的安装方法是通过Packagist和Composer。运行以下命令安装软件包并将其添加为Composer.json的要求:
composer require thefox/smtpd目前,服务器接受所有传入的电子邮件。您可以通过将Event S添加到Server对象( $server->eventAdd($event) )来确定传入的电子邮件会发生什么。服务器可以处理某些事件。每个事件将在某个触发器上执行。即使您不向服务器添加任何事件,它也会接受所有传入的电子邮件。
目前有两个事件触发器。
TRIGGER_NEW_MAIL :当客户端完成发送新电子邮件时,将触发。TRIGGER_AUTH_ATTEMPT :当客户端想要身份验证时,将触发。无论身份验证是否成功,从回调函数中返回布尔值。 另请参见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!
}