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!
}