1、SMTP的定义

SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。

SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。 SMTP 重要特性之一是其能跨越网络传输邮件,即“ SMTP 邮件中继”。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。

在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。

2、SMTP协议工作机制

SMTP通常有两种工作模式。发送SMTP和接收SMTP。具体工作方式为:发送 SMTP在接收到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向DNS查询远端邮件服务器的MX记录,并建立与远端接收 SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方向传送。一旦传送通道建立,SMTP发送者发送 MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者 接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此反复多次。当接收者收到全部邮件后会接收到特别的序列, 入伏哦接收者成功处理了邮件,则返回OK应答。

3、SMTP的连接和发送过程

(a)建立TCP连接

(b)客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;

服务器端正希望以OK作为响应,表明准备接收

(c)客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;

服务器端则表示是否愿意为收件人接收邮件

(d)协商结束,发送邮件,用命令DATA发送

(e)以.表示结束输入内容一起发送出去

(f)结束此次发送,用QUIT命令退出

示例如下:

[plain] view plain copy 在CODE上查看代码片派生到我的代码片

C: telent SMTP.163.com 25 //以telenet方式连接163邮件服务器

S: 220 163.com Anti-spam GT for Coremail System //220为响应数字,其后的为欢迎信息

C: HELO SMTP.163.com //除了HELO所具有的功能外,EHLO主要用来查询服务器支持的扩充功能

S: 250-mail

S: 250-AUTH LOGIN PLAIN

S: 250-AUTH=LOGIN PLAIN

S: 250 8BITMIME //最后一个响应数字应答码之后跟的是一个空格,而不是’-‘

C: AUTH LOGIN //请求认证

S: 334 dxNlcm5hbWU6 //服务器的响应——经过base64编码了的“Username”=

C: Y29zdGFAYW1heGl0Lm5ldA== //发送经过BASE64编码了的用户名

S: 334 UGFzc3dvcmQ6 //经过BASE64编码了的”Password:”=

C: MTk4MjIxNA== //客户端发送的经过BASE64编码了的密码

S: 235 auth successfully //认证成功

C: MAIL FROM: bripengandre@163.com //发送者邮箱

S: 250 … . //“…”代表省略了一些可读信息

C: RCPT TO: bripengandre@smail.hust.edu.cn //接收者邮箱

S: 250 … . // “…”代表省略了一些可读信息

C: DATA //请求发送数据

S: 354 Enter mail, end with “.” on a line by itself

C: Enjoy Protocol Studing

C: .

S: 250 Message sent

C: QUIT //退出连接

S: 221 Bye

其他命令:

VRFY——用于验证给定用户邮箱是否存在,以及接收关于该用户的详细信息;

EXPN——用于扩充邮件列表

4、SMTP常用的命令

SMTP命令不区分大小写,但参数区分大小写。常用命令如下:

HELO <domain> <CRLF>——向服务器标识用户身份发送者能欺骗、说谎,但一般情况下服务器都能检测到

RCPT TO: <forward-path> <CRLF>——<forward-path>用来标志邮件接收者的地址,常用在MAIL FROM后,可以有多个RCPT TO

DATA <CRLF>——将之后的数据作为数据发送,以<CRLF>.<CRLF>标志数据的结尾

REST <CRLF>——重置会话,当前传输被取消

NOOP <CRLF>——要求服务器返回OK应答,一般用作测试

QUIT <CRLF>——结束会话

VRFY <string> <CRLF>——验证指定的邮箱是否存在,由于安全方面的原因,服务器大多禁止此命令

EXPN <string> <CRLF>——验证给定的邮箱列表是否存在,由于安全方面的原因,服务器大多禁止此命令

HELP <CRLF>——查询服务器支持什么命令

5、SMTP常用的响应

501——参数格式错误

502——命令不可实现

503——错误的命令序列

504——命令参数不可实现

211——系统状态或系统帮助响应

214——帮助信息

220<domain>——服务器就绪

221<domain>——服务关闭

421<domain>——服务器未就绪,关闭传输信道

250——要求的邮件操作完成

251——用户非本地,将转发向<forward-path>

450——要求的邮件操作未完成,邮箱不可用

550——要求的邮件操作未完成,邮箱不可用

451——放弃要求的操作,处理过程中出错

551——用户非本地,请尝试<forward-path>

452——系统存储不足,要求的操作未执行

552——过量的存储分配,要求的操作未执行

553——邮箱名不可用,要求的操作未执行

354——开始邮件输入,以“.”结束

554——操作失败


GDCA一直以“构建网络信任体系,服务现代数字生活”的宗旨,致力于提供全球化的数字证书认证服务。其自主品牌——信鉴易®TrustAUTH® SSL证书系列,为涉足互联网的企业打造更安全的生态环境,建立更具公信力的企业网站形象。

转载于:https://blog.51cto.com/10085711/2069302

电子邮件传输之SMTP协议相关推荐

  1. 电子邮件的发送过程计算机网络,计算机网络技术〖负责电子邮件传输的应用层协议是〗相关单选题...

    1.[题目]负责电子邮件传输的应用层协议是 选项: A.SMTP B.PPP C.IP D.FTP 答案: A 解析: 暂无解析 1.[题目]服务与协议是完全不同的两个概念.下列关于它们的说法错误的是 ...

  2. 电子邮件SMTP协议原始命令码和工作原理

    [中国邮箱网 电子邮件频道]SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协 ...

  3. 计网必会:电子邮件、SMTP协议

    文章目录 SMTP概念 SMTP的操作过程--发送邮件-接收邮件 细品:发送邮件 与HTTP的对比 邮件报文格式和MIME 邮件访问协议 SMTP概念 SMTP是电子邮件中的主要协议,它能使用TCP可 ...

  4. 基于Java的SMTP协议邮件发送模拟系统

    目录 1. 原理分析 2. 前端页面 3. 数据库设计 4. 后端数据处理 5. 参考文献 6. 注意事项 1. 原理分析 SMTP协议 SMTP(Simple Mail Transfer Proto ...

  5. 计算机网络--电子邮件传输协议(SMTP POP3 IMAP)

    电子邮件传输协议详解 1.邮件传输系统的运行机制 邮件传输系统包含主要的三个部分:用户代理.邮件服务器和相关的邮件传输协议. 用户代理是客户端,功能是向服务器发送用户的邮件或者从服务器接收用户的邮件. ...

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

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

  7. linux笔记 3-4 SMTP,.配置电子邮件传输

    ***************4.配置电子邮件传输*****************##1.基本电子邮件配置##配置dns服务,添加MX记录两台服务器分别配置 /etc/postfix/main.cf ...

  8. SMTP协议解读以及如何使用SMTP协议发送电子邮件

    电子邮件协议中POP3协议用于接收邮件,SMTP协议用于发送邮件.SMTP的全称为Simple Mail Transfer Protocol,也就是简单邮件传输协议,字如其名.   相较于POP3而言 ...

  9. 电子邮件协议(SMTP协议,POP3协议)

    电子邮件协议(SMTP协议,POP3协议) SMTP 使用Telnet访问SMTP服务器 POP3 使用Telnet访问POP3服务器 SMTP STMP(简单邮件传输协议)是因特网电子邮件的核心.如 ...

最新文章

  1. R语言psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、指定进行正交旋转、斜交旋转提取因子、比较正交旋转和斜交旋转之间的差异、因子结构矩阵、因子模式矩阵和因子相关矩阵之间的关系
  2. 韩磊老师与C#编程风格
  3. 机器人演唱邓丽君是真的吗_20年后,高科技让她与邓丽君终相逢
  4. 27 款经典的CSS 框架
  5. Flash中的SLC/MLC/MLC--基础
  6. java.lang.NoClassDefFoundError异常处理
  7. Kotlin数据类型(一:数据类型)
  8. Activity返回值
  9. Alibaba Fastjson 入门详细教程
  10. listary什么意思_listary pro有什么功能
  11. 适合初学者的 10 大机器学习项目
  12. connect holder is null问题记录
  13. DataGridView控件数据导出表格
  14. 【Python_006】Python爬虫抓取豆瓣电影影评
  15. 黄章出山的730天:牢牢掌控魅族,绝不放权!
  16. 服务器虚拟化 硬件分区 电气隔离,HPE Integrity BL860c i6
  17. 西门子mr图像后处理手册_西门子MRI操作手册手工版.doc
  18. 元数据管理、治理、系统、建设方案、范例等
  19. eip协议通信_NT151应用案例:西门子PLC S7-1200与派克ACR9000的通信(Part 2)
  20. 单片机人体感应灯c语言,单片机光控人体感应灯案例.doc

热门文章

  1. 手写 springIoc 注解版 ,实现@Service (beng),@Resource (依赖注入)
  2. Excel 将一列数据分成多列
  3. canary-金丝雀
  4. 刷题神器!把LeetCode题目生成卡片;苏黎世联邦理工『数据科学数学基础』课程;深度学习实例锦囊(含代码) ;前沿论文 | ShowMeAI资讯日报
  5. 重庆大学计算机学院新生综合,重庆大学
  6. 微信公众号自定义菜单栏绑定关联小程序
  7. do-while示例:统计成绩总分、平均分、合格率、优良率
  8. 编程任务编号 H: 剪辑电影片段
  9. 高中补习数学:同角三角函数基本关系式解析及答案_图文
  10. 【CSS】文本设置、字体设置