smtpd

2025-12-07 0 727

smtpd

SMTP服务器(库),用于接收用纯PHP编写的电子邮件。该库提供了带有PHP的SMTP服务器端协议的接口。它为每个传入的电子邮件创建一个\\Zend\\Mail\\Message类对象,并将此对象交给自定义PHP函数以进行进一步处理。该项目处于Beta状态,因此不建议用于生产使用。

smtpd中的d代表守护程序。该脚本可以像其他任何守护程序过程一样在后台运行。这并不是要作为网络应用程序运行。

为什么这个项目?

信不信由你,电子邮件仍然是互联网的杀手级功能。有很多项目,例如phpmailer:以编程方式发送电子邮件(带有PHP)。但是,收到SMTP的电子邮件并不多。

使用此界面,您可以为您的应用程序用户做这样的事情:

smtpd +—> | Your PHP App |
+——+ +————————+ +——-+ +————–+\”>

 +------+     +------------------------+     +-------+     +--------------+
| User +---> | MUA (like Thunderbird) +---> | smtpd +---> | Your PHP App |
+------+     +------------------------+     +-------+     +--------------+

当您使用PHP编写消息传递应用程序,但没有图形用户界面时,这很有用。因此,您的图形用户界面可以是任何电子邮件客户端。例如,雷鸟。

项目大纲

该项目概述了我关于开源软件协作的博客文章中所述。

  • 该软件的主要目的是为PHP脚本提供服务器端SMTP API。
  • 尽管RFC实施尚未完成,但必须严格。
  • 将来可能会有更多功能。从协议的角度来看,功能必须是RFC实现。
  • 此列表开放。随意请求功能。

计划的功能

  • 完整的RFC 821实施。
  • 完整的RFC 1651实施。
  • 完整的RFC 1869实施。
  • 用更好的解决方案替换Zend\\Mail

安装

首选的安装方法是通过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 ();

使用带有循环的SMTP服务器

smtpd loop, once.
$server->run();
usleep(10000); // Never run a main thread loop without sleep. Never!
}\”>

 $ 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实施

完整实施

  • 3.5开放和关闭

不完整的实现

  • 3.1邮件
  • 4.1.1命令语义
    • Helo
    • 邮件
    • rcpt
    • 数据
    • 辞职

RFC 1651实施

完整实施

  • 4.1.1第一个命令
  • 4.5来自扩展服务器的错误响应

RFC 3207实施

RFC 4954实施

    1. auth命令

相关链接

  • RFC 821
  • RFC 1425
  • RFC 1651
  • RFC 1869
  • RFC 2821
  • RFC 3207
  • RFC 4954

相关项目

  • IMAPD

项目链接

  • Packagist软件包

下载源码

通过命令行克隆项目:

git clone https://github.com/TheFox/smtpd.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 smtpd https://www.zuozi.net/31790.html

gofcgid
上一篇: gofcgid
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务