电子邮件、SMTP、POP3 、IMAP协议

2024-02-14 19:04

本文主要是介绍电子邮件、SMTP、POP3 、IMAP协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 电子邮件

1.1 电子邮件系统的组成

1.1.1 用户代理 UA (User Agent)

1.1.2 邮件服务器 (Mail Server)

1.1.3 邮件发送和读取协议

1.2 发送和接收电子邮件的重要步骤

1.3 电子邮件的组成

1.4 电子邮件地址的格式

2 简单邮件传送协议 SMTP

2.1 SMTP 通信的三个阶段

3 电子邮件的信息格式

 3.1 邮件内容的首部

4 邮件读取协议 POP3 和 IMAP

4.1 POP3 协议

4.2 IMAP 协议

4.2.1 IMAP 的特点

4.3 IMAP 与 POP3 比较

5 基于万维网的电子邮件

6 通用互联网邮件扩充 MIME

6.1 MIME 主要包括三个部分

6.1.1 内容传送编码(Content-Transfer-Encoding) 

(1)Quoted-printable 编码

(2)Base64 编码

6.1.2 内容类型

(1)MIME Content-Type 说明中的类型及子类型

6.1.3 MIME 举例


1 电子邮件

·电子邮件 (e-mail):指使用电子设备交换的邮件及其方法。

·优点:使用方便,传递迅速,费用低廉,可以传送多种类型的信息(包括:文字信息,声音和图像等)。

·重要标准

        ·简单邮件发送协议:SMTP

        ·互联网文本报文格式

        ·通用互联网邮件扩充 MIME

        ·邮件读取协议:POP3 和 IMAP

1.1 电子邮件系统的组成

三个主要构件:

        用户代理邮件服务器,以及邮件发送和读取协议

1.1.1 用户代理 UA (User Agent)

·用户与电子邮件系统的接口。又被称为电子邮件客户端软件

·基本功能:撰写、显示、处理、通信。

1.1.2 邮件服务器 (Mail Server)

·又被称为邮件传输代理

·功能:发送和接收邮件,同时还要向发信人报告邮件传送的情况。

·按照客户服务器方式工作。

1.1.3 邮件发送和读取协议

·邮件发送和读取使用不同的协议。

·简单邮件发送协议 SMTP:用于在用户代理向邮件服务器 或 邮件服务器之间发送邮件。

·邮局协议 POP3:用于用户代理从邮件服务器读取邮件。

应当注意

·邮件服务器必须能够同时充当客户和服务器。

·SMTP 和 POP3(或 IMAP)都使用 TCP 连接可靠地传送邮件。

1.2 发送和接收电子邮件的重要步骤

两种不同的通信方式

1.3 电子邮件的组成

·电子邮件由信封 (envelope) 和内容 (content) 两部分组成。

·电子邮件的传输程序根据邮件信封上的信息来传送邮件。

·用户在从自己的邮箱中读取邮件时才能见到邮件的内容。

1.4 电子邮件地址的格式

·在邮件的信封上,最重要的就是收件人的地址。

·TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下:

2 简单邮件传送协议 SMTP

·SMTP 规定了在两个相互通信的 SMTP 进程之间交换信息的方法。

·SMTP 使用客户服务器方式。

·SMTP 基于 TCP 实现客户与服务器的通信。

·SMTP 是一个基于文本的 (即 ASCII 码) 的协议。

·SMTP 客户与服务器之间采用命令-响应方式进行交互。

2.1 SMTP 通信的三个阶段

1.连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP 不使用中间的邮件服务器。  

2.邮件传送

3.连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

SMTP 缺点

·不能传送可执行文件或其他的二进制对象。

·限于传送 7 位的 ASCII 码,无法传送非 ASCII 编码的信息。

·服务器会拒绝超过一定长度的邮件。

·某些 SMTP 的实现并没有完全按照 [RFC 821] 的 SMTP 标准。 

3 电子邮件的信息格式

·一个电子邮件分为信封内容两大部分。

·RFC 5322 只规定了邮件内容中的首部 (header) 格式。

·邮件的主体 (body) 部分则让用户自由撰写。

 3.1 邮件内容的首部

4 邮件读取协议 POP3 和 IMAP

两个常用的邮件读取协议:

        ·POP3:邮局协议 (Post Office Protocol) 第3个版本

        ·IMAP:网际报文存取协议 (Internet Message Access Protocol)

4.1 POP3 协议

·POP3 使用客户服务器方式。

·POP3 基于 TCP 实现客户与服务器的通信。

·POP3 支持用户鉴别

·POP3 服务器删除被用户读取了的邮件。

4.2 IMAP 协议

·IMAP 使用客户服务器方式。

·IMAP 基于 TCP 实现客户与服务器的通信。

·IMAP 是一个联机协议。

4.2.1 IMAP 的特点

·连接后只下载邮件首部(部分下载)。

·用户直接在 IMAP 服务器上创建和管理文件夹。

·用户可以搜索邮件内容。

·用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。

·允许收信人只读取邮件中的某一个部分。

·缺点:要想查阅邮件,必须先联网。

4.3 IMAP 与 POP3 比较

必须注意

·邮件读取协议 POP 或 IMAP 与邮件传送协议 SMTP 完全不同。

·发信人的用户代理向源邮件服务器发送邮件,以及源邮件服务器向目的邮件服务器发送邮件,都是使用 SMTP 协议。

·而 POP 协议或 IMAP 协议则是用户从目的邮件服务器上读取邮件所使用的协议。

5 基于万维网的电子邮件

·用户代理 (UA) 的缺点

        必须在计算机中安装用户代理软件。

        收发邮件不方便。

·万维网电子邮件优点

        不需要在计算机中再安装用户代理软件。

        计算机能联网,就能非常方便地收发电子邮件。

        界面非常友好。

·发送、接收电子邮件时使用 HTTP 协议。

·两个邮件服务器之间传送邮件时使用 SMTP。

·使用 HTTP POST 方法提交要发送的邮件。

·使用 HTTP GET 方法读取邮件。

6 通用互联网邮件扩充 MIME

·通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它。

·意图:继续使用目前的 [RFC 822] 格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则

MIME 和 SMTP 的关系

6.1 MIME 主要包括三个部分

·5 个新的邮件首部字段

·定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。

·定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

6.1.1 内容传送编码(Content-Transfer-Encoding) 

(1)Quoted-printable 编码

·适用于所传送的数据中只有少量的非 ASCII 码的情况。

(2)Base64 编码

·适合任意长度的二进制数据。编码表如下:

用两个连在一起的二个等号“==”和一个等号“=”分别表示最后一组的代码只有 8 位或 16 位.

6.1.2 内容类型

·MIME 标准规定:

        Content-Type 说明必须含有两个标识符:内容类型 (type) 和子类型 (subtype),中间用“/”分开。

·MIME 标准原先定义了 7 个基本内容类型和 15 种子类型。

·MIME 允许发件人和收件人自己定义专用的内容类型。但为避免可能出现名字冲突,标准要求为专用内容类型选择的名字要以字符串 X-开始。

(1)MIME Content-Type 说明中的类型及子类型

Multipart 很有用,使邮件增加了相当大的灵活性。

6.1.3 MIME 举例

欢迎一起学习~

这篇关于电子邮件、SMTP、POP3 、IMAP协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709336

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建