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发送一个消息功能

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

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

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

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

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

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

服务器smtp协议,SMTP协议解析相关推荐

  1. 公司邮件服务器端口mail2000,简单邮件传输协议SMTP—邮件服务器DBMail

    SMTP概念 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/ ...

  2. 阿里云服务器不能发送smtp协议邮件问题

    遇到一个大大的坑... 之前在一个阿里云的WindowsServer可以正常发送,本地开发环境也可以,换到阿里云的centos环境下就出问题了,总是提示 一番查找之后,定位问题为:阿里云自去年之后购买 ...

  3. 在服务器设置中smtp协议是指,在outlook的服务器设置中SMTP协议是指

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 在outlook的服务器设置中SMTP协议是指发送邮件服务器. Microsoft Office Outlook是微软办公软件套装 ...

  4. 邮件服务器一般运行哪些协议,总结电子邮件支持的相关协议:SMTP、POP和IMAP

    电子邮件托管是 ISP 提供的主要服务之一. 电子邮件因其简易性和通信速度使人们的通信方式发生了变革. 但是,如果要在计算机或其他终端设备上运行电子邮件,仍然需要多种应用程序和服务. 电子邮件是通过网 ...

  5. smtp发送服务器的协议,smtp协议总结

    Smtp简介: 简易邮件传输通讯协议smtp是互联网上的一种通讯协议,主要功能是用在传送电子邮件,当我们通过电子邮件程序,寄e-mail给另外一个时,必须通过smtp通讯协议,将邮件送到对方的邮件服务 ...

  6. outlook的服务器smtp协议,在outlook的服务器设置中SMTP协议是指

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 在outlook的服务器设置中SMTP协议是指发送邮件服务器. Microsoft Office Outlook是微软办公软件套装 ...

  7. 【计算机网络】应用层 : 电子邮件 ( SMTP 协议 | MIME 协议 | POP3 协议 | IMAP 协议 | 基于万维网的电子邮件 )

    文章目录 一.电子邮件信息格式★ 二.电子邮件系统 组成 结构 ★ 三.SMTP 协议 ( 简单邮件传送协议 ) ★ 四.SMTP 协议 连接建立流程 五.SMTP 协议 邮件发送 流程 六.SMTP ...

  8. 《计算机网络》——文件传输协议FTP、简单邮件传送协议SMTP、邮局协议POP3、网际报文存取协议IMAP、万维网和HTTP协议、超文本传输协议HTTP

    文章目录 文件传输协议FTP FTP服务器和用户端 FTP工作原理 简单邮件传送协议SMTP 邮局协议POP3 网际报文存取协议IMAP 万维网和HTTP协议 超文本传输协议HTTP HTTP协议的特 ...

  9. 【Java】使用smtp和pop3协议,实现邮件收发

    使用到的包: javax.mail-1.5.1.jar 发邮件的时候 - 向运维: 维护服务器linux - 索要: - smtp服务器地址, smtp.163.com - 发送邮件的端口号: 默认2 ...

  10. SMTP 和 POP3 协议的区别和联系

    SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol 3)是两种常用的电子邮件协议,用于发送和接收电子邮件.虽然它们都涉及到电子邮 ...

最新文章

  1. JS去除字符串左右两端的空格
  2. linux系统如何从字母切换为拼音,linux shell字母转换写法
  3. iOS源码学习总结框架
  4. java-retry实现
  5. 相较神经网络,大名鼎鼎的傅里叶变换,为何没有一统函数逼近器?
  6. 基于知识图谱的问答系统(以医疗行业为例)
  7. StringTokenizer将一个字符串分解为单词或者标记
  8. 【SPOJ - DQUERY】D-query(权值树状数组 或 主席树 或 莫队)
  9. java 反射调用set方法_java反射调用set方法时如果让参数做自动类型转换
  10. 3万字《SpringBoot微服务开发——Shiro(安全)》
  11. sv_labs学习笔记 专栏说明博文目录
  12. python装饰器-简易版
  13. 上海巴士集团公布公交整改措施和时间表
  14. java面向对象容许单独_java笔试题
  15. cad老是弹出命令中发生异常_CAD为什么会异常退出?遇到CAD异常退出怎么办-百度经验...
  16. 华为网络设备-OSPF路由实验
  17. 上海重塑能源集团股份有限公司稳步前行,助力行业蓬勃发展
  18. 英语单词词性顺口溜_英语单词速记顺口溜背诵技巧
  19. Linux系统优化篇
  20. 07 仿网易严选微信小程序商城

热门文章

  1. SQL语句大全,留着有用哦!
  2. 小马哥----高仿红米note 主板m8207 201509.2刷机拆机主板图与开机识别图示展示
  3. Oracle创建表以及添加字段备注
  4. IOS实现输入验证码、密码按位分割
  5. react-native0.61插入动图无效的问题(Android)
  6. android 桌面负一屏,全局负一屏高级版
  7. HTTP的两种常用请求方式GET和POST
  8. 如何成为一个NFT圈内人士
  9. 喵的Unity游戏开发之路 - 复杂重力
  10. Linux: shell脚本