純粋なPHPで記述された電子メールを受信するためのSMTPサーバー(ライブラリ)。このライブラリは、PHPを使用したSMTPサーバー側プロトコルへのインターフェイスを提供します。それは、着信するすべての電子メールのZendMailMessageクラスオブジェクトを作成し、このオブジェクトをさらに処理するためにカスタムPHP関数に渡します。このプロジェクトはベータステータスであるため、生産の使用には推奨されません。
SMTPdのdはデーモンの略です。このスクリプトは、他のデーモンプロセスと同様にバックグラウンドで実行できます。 WebApplicationとして実行するためのものではありません。
信じられないかもしれませんが、電子メールはまだインターネットのキラー機能です。 phpmailer:プログラムで(PHPを使用して)メールを送信するプロジェクトがたくさんあります。しかし、SMTPから電子メールを受け取ることはそれほど多くありません。
このインターフェイスを使用すると、アプリユーザーのためにこのようなことを行うことができます。
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
これは、PHPでメッセージングアプリケーションを書いているが、グラフィカルなユーザーインターフェイスがない場合に役立ちます。したがって、グラフィカルユーザーインターフェイスは、任意のメールクライアントになることができます。たとえばサンダーバード。
このプロジェクトは、オープンソースのソフトウェアコラボレーションに関するブログ投稿で説明されているように概説しています。
ZendMailより良いソリューションに置き換えます。 希望するインストール方法は、パッカジストと作曲家を介して行われます。次のコマンドを実行してパッケージをインストールし、Composer.jsonへの要件として追加します。
composer require thefox/smtpd現時点では、サーバーはすべての着信電子メールを受け入れています。 Serverオブジェクト( $server->eventAdd($event) )にEvent Sを追加することにより、着信電子メールで何が起こるかを決定します。サーバーは特定のイベントを処理できます。各イベントは、特定のトリガーで実行されます。サーバーにイベントを追加しなくても、すべての着信電子メールを受け入れます。
現時点では、2つのイベントトリガーがあります。
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!
}