邮件基础之 -- SMTP协议
文章目录
- SMTP协议
- 1. 概念
- 2. 基本流程
- 3. 邮件路由的过程
- 4. SMTP常用的命令
- 5. SMTP常用的响应
- 6. 使用SMTP的必要性
- 7. SMTP和邮件格式的关系
- 8. 浏览器发送邮件使用的协议
SMTP协议
1. 概念
SMTP是采用C/S模式,专用于电子邮件的发送,规定了发信人把邮件发送到收信人的电子邮箱的全过程,SMTP客户与SMTP服务器之间是如何交换信息的,规定了SMTP会话的过程。用户直接使用的是用于编写和发送的客户端软件,一般情况下SMTP服务器运行在远程站点上。客户/服务器之间的通信是通过TCP/IP协议进行的。
SMTP的命令和相应都是基于文本,以命令行为单位,换行符为GR/LF。响应信息一般只有一行,由一个三位数的代码开始,后面可附很简单的文字说明。
2. 基本流程
1)建立TCP连接
2)客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;
3)客户端发送RCPT命令,以标识该电子邮件计划接收人,可以有多个RCPT行;
4)协商结束,发送邮件,用命令DATA发送;
5)以表示结束输入内容一起发送出去;
6)结束此次发送,用QUIT命令退出。
举列子
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
流程:
3. 邮件路由的过程
SMTP服务器是基于“域名服务DNS中计划收件人的域名来路由电子邮件”,SMTP服务器基于DNS中的MX记录来路由电子邮件,MX记录注册了域名和相关的SMTP中的主机,属于该域的电子邮件都应向该主机发送。
若SMTP服务器mail.@qq.com收到信件要发送到mail.@126.com
1)Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次,请求shmail.abc.com的CNAME记录,直到没有为止;
2)假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录;
shmail MX 5 shmail.abc.com
10 shmail2.abc.com
3)Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4 ;
4)Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序 。
4. SMTP常用的命令
SMTP命令不区分大小写,参数区分,常用命令如下:
1)HELO ---- 向服务器标识用户身份发送者能欺骗,说谎,但一般情况下服务器能检测到;
2)RCPT TO ---- 用来标志邮件接收者的地址,常用在MAIL FROM后,可以后多个RCPY TO接收地址;
3)DATA ---- 将之后的数据作为数据发送,以标志数据的结尾;
4)REAT ---- 重置会话,当前传输被取消;
5)NOOP ---- 要求服务器返回OK应答,一般用作测试;
6)QUIT ---- 结束会话;
7)VRFY ---- 验证指定的邮箱是否存在,由于安全方面原因,服务器大多禁止此命令;
8)EXPN ---- 验证给定的邮箱列表是否存在,由于安全方面的原因,服务器大多禁止此命令;
8)HELP ---- 查询服务器支持什么命令。
5. SMTP常用的响应
501——参数格式错误
502——命令不可实现
503——错误的命令序列
504——命令参数不可实现
211——系统状态或系统帮助响应
214——帮助信息
220——服务器就绪
221——服务关闭
421——服务器未就绪,关闭传输信道
250——要求的邮件操作完成
251——用户非本地,将转发向
450——要求的邮件操作未完成,邮箱不可用
550——要求的邮件操作未完成,邮箱不可用
451——放弃要求的操作,处理过程中出错
551——用户非本地,请尝试
452——系统存储不足,要求的操作未执行
552——过量的存储分配,要求的操作未执行
553——邮箱名不可用,要求的操作未执行
354——开始邮件输入,以“.”结束
554——操作失败
6. 使用SMTP的必要性
一般的PC资源不够,处理能力不够,不可能全天候地连接在因特网上来收发邮件。所以使用SMTP服务器,可以让多个用户共用服务器,有效地降低了成本。
7. SMTP和邮件格式的关系
可以用一个比较形象的例子来说明:甲与乙书信来往,甲通过邮局向乙发送信件,邮局见转交邮件可看成使用了SMTP协议,至于书信的格式则会因为地区习惯等的不同而不同,这个书信格式可看成是邮件格式的标准。
8. 浏览器发送邮件使用的协议
浏览器发送邮件的过程:
例如:bripengandre@126.com可通过登陆www.126.com来收发邮件 。
bripengandre@126.com在www.126.com提供的邮件页面上填写的相应信息(如发信人邮箱、收信人邮箱等),通过http协议被提交给126服务器;126服务器根据这些信息组装一封符合邮件规范的邮件(就像用户代理一样);然后smtp.126.com通过SMTP协议将这封邮件发送到接收端邮件服务器。
由此可知,浏览器发送邮件只是用户代理的功能直接放到邮件服务器上去做了,至于邮件服务器见发送邮件仍然采用的是SMTP协议。
范的邮件(就像用户代理一样);然后smtp.126.com通过SMTP协议将这封邮件发送到接收端邮件服务器。
由此可知,浏览器发送邮件只是用户代理的功能直接放到邮件服务器上去做了,至于邮件服务器见发送邮件仍然采用的是SMTP协议。
邮件基础之 -- SMTP协议相关推荐
- 邮件服务器之SMTP协议分析
第1章. SMTP概述 1.1. SMTP在邮件通信过程中的位置 SMTP,即简单邮件传送协议,所对应RFC文档为RFC821.同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的 ...
- SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件
转载:http://blog.sina.com.cn/s/blog_759444350100vx8u.html MIME邮件格式 在RFC 2822文档中定义了简单的ASCII编码的Email的邮件格 ...
- SMTP 协议邮件发送工具封装
文章目录 1. 前言 1.1 说明 1.2 建议 1.3 源码 2. 发件人邮箱开通smtp 服务 2.1 为什么开通smtp 服务 2.2 开启服务的步骤 2.3 普通邮箱开启服务图文 3. 工具类 ...
- 【计算机网络】应用层 : 电子邮件 ( SMTP 协议 | MIME 协议 | POP3 协议 | IMAP 协议 | 基于万维网的电子邮件 )
文章目录 一.电子邮件信息格式★ 二.电子邮件系统 组成 结构 ★ 三.SMTP 协议 ( 简单邮件传送协议 ) ★ 四.SMTP 协议 连接建立流程 五.SMTP 协议 邮件发送 流程 六.SMTP ...
- php邮件代码c语言,C语言实现邮件发送功能(SMTP)源码
[实例简介]C 语言编写的邮件发送器是SMTP协议的源代码和EXE执行程序均在里面使用VS2013开发环境生成,填写对应参数即可成功进行邮件发送,不用配置邮件服务器,只需一个支持SMTP协议的邮箱账号 ...
- 电子邮件之SMTP协议详解
电子邮件 文章目录 电子邮件 一.电子邮件概述 二.电子邮件系统概述 三.发送协议SMTP基本工作原理 四.电子邮件的信息格式 五.多用途因特网邮件扩展MIME 六.邮件读取协议 一.电子邮件概述 电 ...
- html协议属于哪层,smtp协议在什么层
SMTP:简单邮件传输协议 SMTP:Simple Mail Transfer Protocol) SMTP 是一种提供可靠且有效电子邮件传输的协议. SMTP 是建模在 FTP 文件传输服务上的一种 ...
- 协议基础:SMTP:使用Telnet学习SMTP协议
SMTP是简单邮件传输协议(Simple Mail Transfer Protocol)的缩写,这篇文章将通过如何使用telnet命令发生邮件结合RFC文档来学习一下SMTP协议的基础知识. OSI模 ...
- 使用java语言基于SMTP协议手写邮件客户端
使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...
最新文章
- LeetCode实战:整数反转
- minitab怎么算西格玛水平_西格玛和西格玛水平
- 关于生sql中的空值
- python获取文件读写权限_Python 查看文件的读写权限方法
- Nignx出现failed (3: The system cannot find the path specified)问题
- Bootstrap列表组禁用和活动状态
- 菜鸟CEO万霖:双11包裹量将继续增长 已建立更高效的物流枢纽
- 你真的输不起了,别再孩子气了
- 机器学习【系列】之第六章随机森林模型
- 用Python下载风云四号高清卫星云图
- 重启iis的命令是什么?三种简单的重启方式
- input标签详解,用户注册表单
- 游戏主机系统,破旧老电脑秒变高性能儿时复古游戏主机
- android studio无法连接小米手机问题解决
- 手把手教你如何 远程控制另一台电脑 保姆教程
- POI标注分类数据/POI数据分析/商业分析制图
- Excel去掉函数错误值#VALUE!的方法
- 推荐六款图片素材网站
- 创意十足的多媒体沙盘展示,为企业品牌宣传效果锦上添花
- Create和OnCreate的关系