IMAP,POP3,SMTP协议

2023-11-16

1、IMAP

因特网报文存取协议IMAP(Internet Message Access Protocol)

 IMAP协议是由斯坦福大学的Mark Crispin教授在1986年开发的,后期版本是华盛顿州立大学进行开发的,IMAP4是TCP/IP协议族中的一员,现在的版本是“IMAP第四版第一次修订版”(IMAP4rev1)。

IMAP4协议的特性
   IMAP4协议的默认端口:143
   IMAP4协议默认传输协议:TCP/IP
   IMAP4协议适用的网络构架:C/S
   IMAP4协议访问模式:离线/在线
   IMAP4协议存储邮件模式:分布式

一次IMAP4rev1连接组成:

1、建立客户端到服务器的网络连接;

2、服务器初始欢迎;

3、剩下就是重复客户端、服务器的交互, 交互基本形式为:

  客户端发送命令

  服务器返回请求数据

  服务器返回完成响应

客户端命令引发操作。每个客户端命令以一个标识作为前缀(典型的有字母、数字构成的短字符串,如:A0001,A0002,等等)――它称为“标签”。客户端为每个命令生成不同的“标签”,也称每个客户端命令都是标签化的。

  IMAP4rev1服务器端的协议接收端,从客户端读取命令行,解析该命令行及其参数,并传送服务器数据(非标签化,以*或+开头)及一个服务器命令(标签化,有与客户端请求命令相同的前缀)完成结果的响应。

一旦客户端和服务器间的连接建立完成,一个IMAP4rev1连接就会处于4种状态中的某一种。
1.未认证状态 :在未认证状态下,大多数命令在得到许可前,客户端必须提供认证证书。若非连接已经是预认证了的,一个连接开始时,就进入了未认证状态。 
2. 认证状态 :在认证状态下,客户端是认证了的,它必须先于影响邮件的命令被许可前,选择一个邮箱以访问。当一个预认证连接开始,被认可的认证证书已经提供,选择一个邮箱发生错误后,或者一个成功的CLOSE命令后,就进入了认证状态。
3. 选中状态 :在一个选中状态,一个邮箱被选中以访问。当一个邮箱被成功选中时,就进入了这个状态。 
4. 注销状态 :在注销状态下,连接正在被终止。一个客户端请求(通过LOGOUT命令),或者客户端、服务器的单方面动作,都会导致进入这个状态。

之所以提及到状态,是因为IMAP协议的很多指令只有在处于某种状态下才会有效。

具体协议语法参考链接:https://blog.csdn.net/qqnnhhbb/article/details/6428681

 

2、POP3

POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信 模型。

  用户从邮件服务器上接收邮件的典型通信过程如下。

1) 用户运行用户代理(如Foxmail, Outlook Express)。

2) 用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连 接。

3) 客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。

4) 服务端解析用户的命令,做出相应动作并返回给客户端一个响应。

5) 3)和4)交替进行,直到接收完所有邮件转到步骤6),或两者的连接被意外中断而直接退出。

6) 用户代理解析从服务器端获得的邮件,以适当地形式(如可读)的形式呈现给用户。

  <SP>代表空格,<CRLF>代表回车和换行。

---建立连接---|认可|--认证成 功--|处理|--执行QUIT--|更新| 
|_______ -QUIT结束_________________|

POP3相对于因特网报文存取协议IMAP(Internet Message Access Protocol)的最大的不足是:它只是一个脱机协议,客户与服务器的交互性不是特别好。例如不能直接在邮箱中创建文件夹,不太好选择性地下载邮件的某部分(虽然TOP命令部分地实现了这个功能,但交互性不是很好)等。然而,它也有自己的优势,那就是协议简单,容易实现,成本低,这是POP3用得很广泛而IMAP几近淘汰的最重要的原因。

参考链接:

https://blog.csdn.net/u014558484/article/details/53150038

https://www.cnblogs.com/onelikeone/p/7864994.html

 

3、SMTP协议

SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。
 SMTP在1982年首次被定义在  RFC 821 ,在2008它被更新为扩展的SMTP协议,补充在文件 RFC 5321 ,扩展的协议是目前使用最广泛的协议。

参考链接:https://blog.csdn.net/sinat_36219858/article/details/71069515

4、MIME

MIME协议用于定义复杂的邮件体格式,它可以表达多段平行的文本内容和非文本的邮件内容,例如,在邮件体中内嵌的图像数据和邮件附件等。另外,MIME协议的数据格式也可以避免邮件内容在传输过程发生信息丢失。对于表示某个具体资源的MIME消息,它的消息头中需要指定资源的数据类型;对于MIME组合消息,它的消息中需要指定组合关系。具体资源的数据类型和组合消息的组合关系,都是通过消息头中的Content-Type头字段来指定的。Content-Type字段中的内容以“主类型/子类型”的形式出现,主类型有text、image、audio、video、application、multipart、message等,分别表示文本、图片、音频、视频、应用程序、组合结构、消息等。每个主类型下面都有多个子类型,例如text类型包含plain、html、xml、css等子类型。multipart主类型用于表示MIME组合消息,它是MIME协议中最重要的一种类型。一封MIME邮件中的MIME消息可以有三种组合关系:混合、关联、选择,它们对应MIME类型如下:

multipart/mixed
表示消息体中的内容是混和组合类型,内容可以是文本、声音和附件等不同邮件内容的混和体。比如一封邮件中即包含附件,邮件内容还引用内嵌的图片或附件资源,这种类型邮件的MIME类型就必须定义为multipart/mixed。
multipart/related
表示消息体中的内容是关联(依赖)组合类型。比如:邮件内容有一个img标签,这个标签的src属性指向的是邮件内部的一个图片资源,所以这封邮件MIME类型就应该定义为multipart/related
multipart/alternative
表示消息体中的内容是选择组合类型,例如一封邮件的邮件正文同时采用HTML格式和普通文本格式进行表达时,就可以将它们嵌套在一个multipart/alterntive类型的组合消息中。这种做法的好处在于如果邮件阅读程序不支持HTML格式时,可以采用其中的文本格式进行替代。
    一封最复杂的电子邮件的基本情况为:含有邮件正文和邮件附件,邮件正文可以同时使用HTML格式和普通文本格式表示,并且HTML格式的正文中又引用了其它的内嵌资源。对于这种最复杂的电子邮件,可以采用下图所示的MIME消息结构进行描述:

5、IMAP、POP3、SMTP比较

SMTP:主要用来从邮件客户端向邮件服务器发送邮件,也可以用来在邮件服务器之间转发邮件.和其他的两个协议有明显的功能区别.另外的两个协议是用来从邮件服务器获取邮件的.

POP3是把邮件下载到本地计算机。IMAP是连接远程邮箱直接操作。两个都是收信de
SMTP是发信的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IMAP,POP3,SMTP协议 的相关文章

随机推荐

  • FreeLibrary问题

    FreeLibrary问题 Delphi Windows SDK API http www delphi2007 net DelphiAPI html delphi 20061127162652164 html 释放动态库时报C盘下的系统文
  • QT学习之QMainWindow详解

    文章目录 1 菜单栏 2 工具栏 3 状态栏 4 铆接部件 5 核心部件 中心部件 6 资源文件 有关QT的学习我们会采取连载更新 传送门 有C 基础如何直接上手QT 最适合新手的第一个Qt小程序 今天更新内容为QMainWindow相关学
  • C++代理模式:Proxy Pattern

    代理模式 为另一个对象提供一个替身或者占位符以控制对这个对象的访问 这样做的好处是 可以在目标对象实现的基础上 增强额外的功能操作 即扩展目标对象的功能 代理需要做的 控制和管理访问 需要时可以扩展目标对象的功能 被代理的对象可以是远程的对
  • 实时音视频的那些事儿(三)—— 音频编码

    前言 上一篇文章 实时音视频的那些事儿 二 音频采集 中我们讲到了如何在iOS Android Windows平台实现音频采集 今天将介绍如何实现音频的编码 一 iOS 中使用 AudioUnit 实现音频编码的过程 AudioUnit 是
  • java IO、NIO、AIO详解

    目录 概述 一 IO流 同步 阻塞 二 NIO 同步 非阻塞 三 NIO2 异步 非阻塞 正文 回到顶部 概述 在我们学习Java的IO流之前 我们都要了解几个关键词 同步与异步 synchronous asynchronous 同步是一种
  • PE文件资源解析(四)光标资源的解析

    光标资源 在这里指的是资源类型为RT CURSOR的资源信息 通过ResHacker看到的效果图如下 解析代码如下 HRSRC hResrc FindResourceEx HMODULE hModule lpType lpName wLan
  • 将数组中的元素拼接为一个字符串

    join 方法 利用JS数组的join 方法即可完成将元素拼接为一个字符串 arrayObject join separator 备注 join 方法不给定分隔符的时候 默认以英文逗号作为分隔符 toString 方法 可以使用JS数组的t
  • 如何破解PDF文件密码(在线破解PDF密码)

    如何破解PDF文件密码 在线破解PDF密码 fcwgw 5d6d com 整理 凌空飞度社区 每当毕业临近的时候 毕业生都会忙着写论文 每逢此时 Adobe Reader就是最忙的了 但是有时候遇到一些加密的PDF文档 Adobe Read
  • Jenkins与git结合使用进行C++代码静态检查

    Jenkins与git结合使用进行C 代码静态检查 在软件开发过程中 静态代码检查是一种常见的工具和实践 可以帮助开发人员在编码阶段尽早发现和解决潜在的问题 本文将介绍如何使用Jenkins和git集成 利用cppcheck进行C 代码的静
  • 建站系列(一)--- 网站基本常识

    目录 相关系列文章 前言 一 因特网 二 网站 三 服务器 四 IP 五 域名 六 DNS 七 Hosts文件 八 端口号 九 URL 十 静态网站 十一 动态网站 相关系列文章 建站系列 一 网站基本常识 建站系列 二 域名 IP地址 U
  • Python 使用requests发送get请求

    get请求是常用的请求之一 相对于post请求简单些 对于传参数的get请求有的还是有难度的 和post请求一样 必须知道每个字段的含义 这样拿到的响应才是正确的 也是我们想要的 不带参数的get请求 import requests hea
  • 自学Android之路---笔记

    1 查看类的源码CTRL b 2 所有的活动即activity必须要在AndroidManifest xml中进行注册才能生效 3 布局多练习
  • 2023华为OD机试真题【缓存需要最少金币数/贪心算法】

    题目描述 静态扫描可以快速识别源代码的缺陷 静态扫描的结果以扫描报告作为输出 1 文件扫描的成本和文件大小相关 如果文件大小为N 则扫描成本为N个金币 2 扫描报告的缓存成本和文件大小无关 每缓存一个报告需要M个金币 3 扫描报告缓存后 后
  • JWT和token的区别

    什么是token token的意思是 令牌 是服务端生成的一串字符串 作为客户端进行请求的一个标识 当用户第一次登录后 服务器生成一个token并将此token返回给客户端 以后客户端只需带上这个token前来请求数据即可 无需再次带上用户
  • Mini-NDN 安装

    1 git clone https github com named data mini ndn 2 install sh 报错1 Traceback most recent call last File usr lib python3 d
  • Spring--IOC容器

    文章目录 Spring IOC容器 一 IOC概念和底层原理 1 官方概念 2 什么是IOC 3 IOC底层原理 4 降低耦合的历史演变 二 IOC接口 Beanfactory 1 IOC思想基于IOC容器完成 IOC容器底层就是对象工厂
  • java判断是否为序列二叉树 - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 今天还是二叉树诶嘿嘿 首先还是明确一个概念 何为序列二叉树 答 中序遍历之后序列递增的二叉树为序列二叉树 比如这棵树 4 2 7 1 3 5 8 6 它的中序遍历结果
  • 图的深度遍历

    题目描述 请定一个无向图 顶点编号从0到n 1 用深度优先搜索 DFS 遍历并输出 遍历时 先遍历节点编号小的 输入 输入第一行为整数n 0 lt n lt 100 表示数据的组数 对于每组数据 第一行是两个整数k m 0 k 100 0
  • web前端开发自学书籍推荐这5本

    JavaScript权威指南 第6版 淘宝前端团队翻译的 看译者列表都是一堆大神 这本书又叫犀牛书 号称 Javascript 开发者的圣经 网上对此书评价很多 大概意思都是说这本书是一本 JavaScript 文档手册 没有完整看过一遍此
  • IMAP,POP3,SMTP协议

    1 IMAP 因特网报文存取协议IMAP Internet Message Access Protocol IMAP协议是由斯坦福大学的Mark Crispin教授在1986年开发的 后期版本是华盛顿州立大学进行开发的 IMAP4是TCP