thefox/smtpd
Composer 安装命令:
composer require thefox/smtpd
包简介
SMTP server (library) written in pure PHP.
README 文档
README
SMTP server (library) for receiving emails, written in pure PHP. This library provides an interface to the SMTP server-side protocol with PHP. It creates a \Zend\Mail\Message Class object for every incoming email and hands this object to a custom PHP function for further processing. The project is in Beta status, so it's not recommended for production use.
The d in SMTPd stands for Daemon. This script can run in background like any other daemon process. It's not meant for running as a webapplication.
Why this project?
Believe it or not, email is still the killer feature of the Internet. There are tons of projects like PHPMailer: to send emails programmatically (with PHP). But there are not so many to receive emails from SMTP.
With this interface you can do something like this for your app users:
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
This is useful when you have a messaging application written in PHP but no graphical user interface for it. So your graphical user interface can be any email client. Thunderbird for instance.
Project Outlines
The project outlines as described in my blog post about Open Source Software Collaboration.
- The main purpose of this software is to provide a server-side SMTP API for PHP scripts.
- Although the RFC implementations are not completed yet, they must be strict.
- More features can be possible in the future. In perspective of the protocols the features must be a RFC implementation.
- This list is open. Feel free to request features.
Planned Features
- Full RFC 821 implementation.
- Full RFC 1651 implementation.
- Full RFC 1869 implementation.
- Replace
Zend\Mailwith a better solution.
Installation
The preferred method of installation is via Packagist and Composer. Run the following command to install the package and add it as a requirement to composer.json:
composer require thefox/smtpd
Delivery
At the moment the server accepts all incoming emails. You decide what happens with incoming emails by adding Events to the Server object ($server->eventAdd($event)). The server can handle certain events. Each event will be executed on a certain trigger. Even if you don't add any Events to the Server it accepts all incoming emails.
Events
At the moment there are two Event Triggers.
TRIGGER_NEW_MAIL: will be triggered when a Client has finished transmitting a new email.TRIGGER_AUTH_ATTEMPT: will be triggered when a Client wants to authenticate. Return a boolean from the callback function whether the authentication was successful or not.
Examples
See also example.php file for full examples.
Trigger New Mail Example
$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();
Trigger Auth Example
$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();
Use SMTP Server with own 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! }
RFC 821 Implementation
Complete implementation
- 3.5 OPENING AND CLOSING
Incomplete implementation
- 3.1 MAIL
- 4.1.1 COMMAND SEMANTICS
- HELO
- RCPT
- DATA
- NOOP
- QUIT
RFC 1651 Implementation
Complete implementation
- 4.1.1 First command
- 4.5 Error responses from extended servers
RFC 3207 Implementation
RFC 4954 Implementation
-
- The AUTH Command
Related Links
Related Projects
Project Links
thefox/smtpd 适用场景与选型建议
thefox/smtpd 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.45k 次下载、GitHub Stars 达 126, 最近一次更新时间为 2014 年 07 月 31 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「mail」 「email」 「server」 「smtp」 「daemon」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 thefox/smtpd 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 thefox/smtpd 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 thefox/smtpd 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.
Courier offers a convenient and painless solution for creating emails tailored for your Kirby website.
Mail libraries used by Zimbra Api
Extensible library for building notifications and sending them via different delivery channels.
Email+ extends Kirby's email capabilities by adding support for multiple email services using the same Kirby email API.
A jQuery augmented PHP library for creating and validating HTML forms
统计信息
- 总下载量: 2.45k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 128
- 点击次数: 10
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0
- 更新时间: 2014-07-31