热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

服务器smtp协议,SMTP协议解析

http:home.eeworld.com.cnmyspace-uid-361439-blogid-360809.html2016在写这篇帖子之前发表过一篇讨论SMTP实现的帖子&

http://home.eeworld.com.cn/my/space-uid-361439-blogid-360809.html

2016在写这篇帖子之前发表过一篇讨论SMTP实现的帖子,大伙的反馈还是挺热烈的,今天就说说SMTP到底是干嘛的。

首先来个官方对于SMTP协议的介绍:

SMTP(Simple Mail Transfer Protocol)即。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个 端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服 务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。SMTP协议与人们用于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务 器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。 在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息,具体的介绍可以看我之前发的链接 http://home.eeworld.com.cn/my/space-uid-361439-blogid-343574.html

上面讲了那么多,其实SMTP就是一种

HELO;识别发送方到接收SMTP的一个HELLO命令

MAIL FROM:;为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件到一个或多个邮箱中。

RCPT TO:;标识各个接收者的地址

DATA

接收SMTP将把其后的行为看作邮件数据去处理,以.;标识数据的结尾。

REST;退出/复位当前的邮件传输

NOOP;要求接收SMTP仅做OK应答。(用于测试)

QUIT;要求接收SMTP返回一个OK应答并关闭传输。

VRFY;验证指定的邮箱是否存在,由于安全因素,多禁止此命令。

EXPN;验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。

HELP;查询服务器支持什么命令

没错,其实看起来很高大上的发送邮件邮件就是通过上面几条命令来实现的,现在我们拿Telnet来实现上面的功能:对于邮件服务器的端口如果不带SSL功能默认是25.下面我就拿新浪邮箱来做个简单的测试:

1:用telnet实现发送单封邮件功能,发送邮件的流程如下:

下面实现通过一个新浪邮箱向我QQ发送一个消息功能

75701303_1.png

也是大伙对于上面的应答码看不明白,可以看下我之前发的SMTP应答码解释

75701303_2.png

2:那如何实现一对多的模式发送邮件呢?

其实只要多次调用RCPT TO:;这条命令就行

75701303_3.png

75701303_4.png

对于ESP8266里面实现的WIFI邮件功能,其实就是将命令组合起来调用而已:

其实SMTP就是那么简单,要实现发送邮件的功能也就是上面几条命令而已,技术就是这样懂得永远觉得简单,不懂的永远觉得那么难,一下就到11点了,实现了SMTP协议也仅仅是实现了发送邮件功能,如果你想实现离线下载邮件,那就不得不提POP3协议了,由于时间原因,明晚继续~~~~~~~~~~~~~~~~

最后温馨提醒:CRLF是\r\n,在调试SMTP时,之前一直出现失败,主要原因是邮件服务器把邮件当作垃圾邮件处理了导致无法发送成功,所以大伙主要发送的主题不要随便写,尽量规避掉服务器的约束~~~~~~~~·~~~~



推荐阅读
  • 本文深入探讨了网络编程中的基本概念,如指针、引用和可重入函数,并详细介绍了OSI七层模型和TCP/IP四层模型的功能与协议。同时,文章还对比了HTTP与HTTPS的区别,分析了HTTP请求报文的结构,讨论了TCP与UDP的主要差异,以及滑动窗口协议的工作原理。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 转自:http:www.yybug.comread-htm-tid-15324.html为什么使用Twisted? 如果你并不准备使用Twisted,你可能有很多异议。为什么使用T ... [详细]
  • Linux环境下Redmine快速搭建指南
    本文将详细介绍如何在Linux操作系统中使用Bitnami Redmine安装包快速搭建Redmine项目管理平台,帮助读者轻松完成环境配置。 ... [详细]
  • Linux环境下通过PHP SMTP发送邮件的配置指南
    本文详细介绍了如何在Linux系统中配置PHP通过SMTP发送邮件,包括防火墙设置、端口检查与释放、IPv6到IPv4的转换、DNS缓存刷新以及PHP相关配置等步骤。 ... [详细]
  • 深入理解IIS:全面解析与应用
    本文详细介绍了IIS(Internet Information Services)的功能及其在不同Windows系统中的应用,探讨了IIS如何支持多种网络服务,如Web、FTP、NNTP和SMTP,并解释了其在现代网站开发和服务器管理中的重要性。 ... [详细]
  • 使用亚马逊免费服务部署Discuz!论坛指南(第一部分)
    本文将指导您如何利用亚马逊AWS提供的12个月免费试用服务来部署Discuz!论坛。仅需一张信用卡即可轻松注册并开始使用。文章将详细介绍从账号注册到实例创建的具体步骤。 ... [详细]
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统上快速安装和配置Bitnami版本的GitLab,包括下载安装文件、执行安装过程以及设置邮件服务等步骤。 ... [详细]
  • 2023年最新:PHP本地端口配置详解
    本文详细介绍了PHP在不同环境下的本地端口配置方法及常见问题解决方案,帮助开发者更好地理解和配置PHP端口。 ... [详细]
  • Python安全实践:Web安全与SQL注入防御
    本文旨在介绍Web安全的基础知识,特别是如何使用Python和相关工具来识别和防止SQL注入攻击。通过实际案例分析,帮助读者理解SQL注入的危害,并掌握有效的防御策略。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
author-avatar
Y死一般的痛过
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有