热门标签 | 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的主要差异,以及滑动窗口协议的工作原理。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 转自: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!论坛。仅需一张信用卡即可轻松注册并开始使用。文章将详细介绍从账号注册到实例创建的具体步骤。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了在iPhone上设置和配置邮件账户的步骤,包括基础设置、服务器端口调整以及其他个性化选项,帮助用户顺利完成邮件账户的配置。 ... [详细]
  • 利用Python实现自动化群发邮件
    本文详细介绍如何使用Python语言来实现邮件的自动群发功能,适合希望提高工作效率的技术爱好者和开发者。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统上快速安装和配置Bitnami版本的GitLab,包括下载安装文件、执行安装过程以及设置邮件服务等步骤。 ... [详细]
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社区 版权所有