SMTP -сервер (библиотека) для получения электронных писем, написанных в Pure PHP. Эта библиотека обеспечивает интерфейс для протокола на стороне SMTP с PHP. Он создает объект класса ZendMailMessage для каждого входящего электронного письма и передает этот объект пользовательской функции PHP для дальнейшей обработки. Проект находится в статусе бета, поэтому он не рекомендуется для использования производства.
d в SMTPd означает Daemon. Этот скрипт может работать в фоновом режиме, как любой другой процесс демона. Это не предназначено для работы в качестве веб -приложения.
Хотите верьте, хотите нет, что электронная почта по -прежнему является убийцей в Интернете . Существует множество проектов, таких как Phpmailer: для программного отправки электронных писем (с PHP). Но не так много, чтобы получить электронные письма от SMTP.
С помощью этого интерфейса вы можете сделать что -то подобное для пользователей приложения:
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
Это полезно, когда у вас есть приложение для обмена сообщениями, записанное в PHP, но для него нет графического интерфейса пользователя. Таким образом, ваш графический пользовательский интерфейс может быть любым почтовым клиентом. Thunderbird, например.
Проект описывает, как описано в моем блоге о сотрудничестве программного обеспечения с открытым исходным кодом.
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!
}