本帖最后由 imoling 于 2025-5-12 17:17 编辑
使用了2个模块,精易和HPsocket-5.8.8。
模块我就不上传了,一个精易,HPsocket模块在我hp心跳包例子中有,也可以自行论坛搜一下。
-------------------------------------------------------------------------------------------------------------
之前一直想做一个邮件的服务端,一直都没做,最近有个任务需要用到,就做了一个SMTP协议 接收邮件部分,POP3或IMAP等请自行研究协议,目前没用到这功能。
本来想完善一下,把邮件都保存下来,再做html处理,图片处理,不想搞了就这样吧,有能力小伙伴自行修改吧。
百du搜索了一下[size=2.1em]SMTP 协议的工作原理
刚开始被后边的协议填写内容搞的莫名其妙,原来是我多想了,那些只是做标示作用,主要的还是几个发送和响应标记
SMTP 的工作原理SMTP 使用客户Duan-服务器模型,通过明文或加密的通信通道传输邮件。它的核心功能是发送邮件和传递邮件。 1. SMTP 连接建立- 客户Duan连接到服务器的 25 端口(默认的 SMTP 端口)。
- 服务器返回状态码 220,表示服务已就绪。
- 客户Duan发送 HELO 或 EHLO 命令,告知服务器自己的域名。
- 服务器返回状态码 250,表示命令成功。
2. 邮件发送在连接建立后,客户Duan可以发送邮件。以下是典型的邮件发送流程: - MAIL FROM:客户Duan指定发件人邮箱。
- RCPT TO:客户Duan指定收件人邮箱。
- DATA:客户Duan开始输入邮件内容。
- 邮件内容:客户Duan发送邮件正文。
- .:客户Duan用单独一行的句点表示邮件输入结束。
- 服务器返回状态码 250,表示邮件接收成功。
3. 连接关闭在邮件发送完成后,客户Duan可以关闭连接: - 客户Duan发送 QUIT 命令,请求关闭连接。
- 服务器返回状态码 221,表示连接已关闭。
基本的协议过程就是这样,邮件的接收部分都是一次性的,socket 连接建立->邮件接收->连接关闭.
在刚开始测试中发现很多问题,像调试的时候,如果没有对数据进行接收或服务端异常,client部分会隔一段时间不听的连接。直到尝试连接数超出,发送方 就会收到发送邮件失败的反馈。
-----------------------------------------------------------------------------------------------------------------------
本邮件服务处理并接收邮件的标题,文本内容,不对Base64图片, HTML进行处理,但已经对数据进行接收,如需要处理HTML内容,图片等,请自行对数据进行取值保存或者处理。
代码中有很多调试的东西,乱糟糟,随便自行处理吧
你需要准备如下条件
1.开放25端口
2.域名(包括动态域名)或公网ip(wai网能访问到)
觉得不错请给个小爱心评分,附件源码+已编译好的EXE。。累了88
下载地址如下
|