6.6、电子邮件

news2025/1/14 18:19:38

电子邮件(E-mail)是因特网上 最早流行的一种应用 \color{red}最早流行的一种应用 最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一

传统的电话通信属于实时通信,存在以下两个缺点:

  • 电话通信的主叫和被叫双方必须同时在场;

  • 一些不是十分紧迫的电话也常常不必要地打断人们的工作或休息。

而电子邮件与邮政系统的寄信相似。

  • ① 发件人将邮件发送到自己使用的邮件服务器;

  • ② 发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱;

  • ③ 收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。

电子邮件使用方便、传递迅速而且费用低廉。它不仅可以传送文字信息,而且还可附上声音和图像。

由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。

  • 在我国, 电信局的电报业务也因电子邮件的普及而濒临消失 \color{red}电信局的电报业务也因电子邮件的普及而濒临消失 电信局的电报业务也因电子邮件的普及而濒临消失

电子邮件系统采用 客户 / 服务器方式 \color{red}客户/服务器方式 客户/服务器方式

电子邮件系统的三个主要组成构件:

  • 用户代理 \color{red}用户代理 用户代理
  • 邮件服务器 \color{red}邮件服务器 邮件服务器
  • 以及 电子邮件所需的协议 \color{red}电子邮件所需的协议 电子邮件所需的协议

1、用户代理(电子邮件客户端软件)&邮件服务器

如下所示,在发送方的计算机中,需要使用用户代理来发送邮件

  • 在接受方的计算机中,同样也需要使用用户代理来接收邮件

用户代理 \color{blue}用户代理 用户代理是用户与电子邮件系统的接口

  • 又称为 电子邮件客户端软件 \color{blue}电子邮件客户端软件 电子邮件客户端软件

image-20230110003817847

邮件服务器 \color{blue}邮件服务器 邮件服务器是电子邮件系统的基础设施。因特网上所有的 ISP 都有邮件服务器

  • 其功能是 发送和接收邮件 \color{blue}发送和接收邮件 发送和接收邮件
  • 同时还要负责维护用户的邮箱

2、邮件发送协议&邮件接收协议

我们可以简单的认为邮件服务器中有很多邮箱、还有用来缓存待转发邮件的缓存

image-20230110004057633

发送方使用用户代理通过邮件发送协议(例如:SMTP)将邮件发送给发送方邮件服务器

发送方邮件服务器同样通过邮件发送协议将该邮件发送给接收方邮件服务器

接收方在方便的时候使用用户代理通过邮件读取协议(例如:POP3

  • 从接收方邮件服务器读取邮件

image-20230110004336272

也就是说 协议 \color{blue}协议 协议包括邮件发送协议 发送协议 \color{blue}发送协议 发送协议(例如:SMTP

  • 和邮件 读取协议 \color{blue}读取协议 读取协议(例如:POP3IMAP

3、邮件发送和接受过程

发送方的用户代理作为 SMTP 客户

  • 与发送方邮件服务器中的 SMTP 服务器进行 TCP 连接

然后基于这条连接使用 SMTP 协议来发送邮件给发送方邮件服务器

image-20230110004753655


发送方邮件服务器中的 SMTP 客户

  • 与接收方 SMTP 服务器进行 TCP 连接

然后基于这条连接使用 SMTP 协议来发送收到的待转发邮件给接收邮件服务器

image-20230110004839220


接收方的用户代理作为 POP3 客户

  • 与接收方邮件服务器中的 POP3 服务器进行 TCP 连接

然后基于这条连接使用 POP3 协议从接收方服务器读取邮件

image-20230110004947373


image-20230110005037441

4、简单邮件传送协议 SMTP(Simple Mail Transfer Protocol)的基本工作过程

如下所示

image-20230110005141862

发送方邮件服务器周期性地扫描邮件缓存

  • 若发现有待转发的邮件,则发送方邮件服务器中 SMTP 客户会与接收方邮件服务器中的 SMTP 服务器进行 TCP 连接

    端口号为 25 25 25

image-20230110005309328

之后,SMTP 客户就可以基于 SMTP 连接给 SMTP 服务器发送 SMTP 命令

  • 14 14 14

SMTP 服务器也会给 SMTP 客户发送相应的应答

  • 21 21 21

image-20230110005435960

SMTP 客户与服务器之间通过 命令与应答 \color{blue}命令与应答 命令与应答的交互方式

  • 最终实现 SMTP 客户发送邮件给 SMTP 服务器

4.1、命令与应答的过程

整体流程图

image-20230110012912714


TCP 连接建立成功后,SMTP 服务器会主动推送 服务就绪应答 \color{red}服务就绪应答 服务就绪应答SMTP 客户

  • 应答代码 220 220 220 后面可能跟有描述信息

    例如:网易服务器给出的描述信息

    image-20230110005733926

image-20230110005752457

SMTP 客户收到该应答后,向服务器说明身份,告知自己 SMTP 服务器的域名

  • 具体命令为:HELO 其后为命令参数

    例如:HELO hnust.edu.cn

SMTPHELO.gif

SMTP 服务器若认为身份有效,则发回应答代码: 250 250 250

  • 否则发回其他错误代码,例如: 421 421 421 表示服务不可用

SMTPACK.gif

SMTP 客户收到该应答后,使用命令 MAIL FROM 来告诉服务器邮件来自何方

  • 例如:MAIL FROM:<jgao1 @hnust.edu.cn>

SMTPFROM.gif

SMTP 服务器认为合理,则发回应答代码: 250 250 250

  • 否则发回其他错误代码

SMTPFROMACK.gif

SMTP 客户收到该应答后,使用命令 RCPT TO 来告诉服务器邮件去往何地,也就是收件人邮箱

  • 例如:RCPT TO:<收件人地址>

SMTPTO.gif

SMTP 服务器种若有该收件人邮箱,则发回应答代码 250 250 250

  • 否则发回其他错误代码

SMTPTOACK.gif

SMTP 客户收到该应答后,使用 DATA 命令来告诉服务器自己准备发送邮件内容了

SMTPDATA.gif

SMTP 服务器若准备好接收,发回应答代码 454 454 454

  • 否则发回其他错误代码

SMTPDATAACK.gif

SMTP 客户收到该应答后就向 SMTP 服务器发送邮件内容

SMTPNR.gif

SMTP 客户发送完邮件内容后还要发送结束符

SMTPNREND.gif

SMTP 服务器若收件成功,则发回应答代码 250 250 250

  • 否则发回其他错误代码

SMTPENDACK.gif

SMTP 客户收到该应答后,使用命令 QUIT 向服务器请求断开连接

SMTPQUIT.gif

SMTP 服务器发回应答代码 221 221 221 表示接受请求并主动断开连接

image-20230110012824221

image-20230110012844683

5、电子邮件的信息格式

电子邮件的信息格式并不是由 SMTP 定义的,而是在 RFC 822 中单独定义的。这个 RFC 文档已在 2008 年更新为 RFC 5322

一个电子邮件有 信封 \color{red}信封 信封 内容 \color{red}内容 内容两部分。

  • 而内容又由 首部 \color{red}首部 首部 主体 \color{red}主体 主体两部分构成。

    首部和主体由用户填写

首部中包含有一些关键字,后面加上冒号

  • 例如:

    From: jgap1@hnust.edu.cn

    To: 收件人的电子邮件地址(一/多)

    Cc: 一个或多个收件人以外的抄送人的电子邮件地址

    • 抄送人收到邮件后,可看可不看邮件,可回可不回邮件

    Subject: 邮件的主题(反应了邮件的主要内容)

  • 很显然,最重要的关键字为 ToSubject,往往是必填选项

用户写好首部后,邮件系统自动将信封所需的信息提取出来并写在信封上

  • 所以用户不需要填写电子邮件信封上的信息

image-20230110173621221

在填写完首部各关键字的内容后,用户还需要撰写邮件的主体部分

  • 这才是用户想传递给收件人的核心信息

image-20230110173723671


6、多用途因特网邮件扩展 MIME

SMTP 协议只能传送 ASCII 码文本数据 \color{red}\texttt{SMTP} 协议只能传送 \texttt{ASCII} 码文本数据 SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。

SMTP 不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。

为解决 SMTP 传送非 ASCII 码文本的问题

  • 提出了 多用途因特网邮件扩展 MIME \color{red}多用途因特网邮件扩展\texttt{MIME} 多用途因特网邮件扩展MIME(Multipurpose Internet Mail Extensions)

如下所示,发送方发送的电子邮件中包含有非 ASCII 码数据

  • 则不能直接使用 SMTP 进行传送

需要通过 MIME 进行转换

  • 将非 ASCII 码数据转换为 ASCII 码数据

然后就可以使用 SMTP 进行传送了

接收方也要使用 MIME 对收到的 ASCII 码数据进行逆转换

  • 这样就可以得到包含有非 ASCII 码数据的电子邮件

image-20230110175900304


为了实现这种转换

增加了 5 个新的邮件首部字段 \color{red}5 个新的邮件首部字段 5个新的邮件首部字段,这些字段提供了有关邮件主体的信息。

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

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

实际上,MIME 不仅仅用于 SMTP ,也用于后来的同样面向 ASCIl 字符的 HTTP.


7、常见的邮件读取协议(POP&IMAP)

邮局协议 POP \color{red}邮局协议\texttt{POP} 邮局协议POP (Post Office Protocol),POP3 是其第三个版本,是因特网正式标准。

  • 非常简单、功能有限的邮件读取协议。用户只能以 下载并删除方式 \color{red}下载并删除方式 下载并删除方式 下载并保留方式 \color{red}下载并保留方式 下载并保留方式从邮件服务器下载邮件到用户方计算机。

    不允许用户在邮件服务器上管理自己的邮件 \color{red}不允许用户在邮件服务器上管理自己的邮件 不允许用户在邮件服务器上管理自己的邮件

    • (例如创建文件夹,对邮件进行分类管理等)。

因特网邮件访问协议 IMAP \color{red}因特网邮件访问协议\texttt{IMAP} 因特网邮件访问协议IMAP (Internet Message Access Protocol),IMAP4 是其第四个版本,目前还只是因特网建议标准。

  • 功能比 POP3 强大的邮件读取协议。

    用户在自己的计算机上就可以操控邮件服务器中的邮箱 \color{red}用户在自己的计算机上就可以操控邮件服务器中的邮箱 用户在自己的计算机上就可以操控邮件服务器中的邮箱

    就像在本地操控一样

  • 因此 IMAP 是一个联机协议。

image-20230110180224615

POP3IMAP4 都采用 基于 TCP 连接的客户 / 服务器方式 \color{red}基于\texttt{TCP}连接的客户/服务器方式 基于TCP连接的客户/服务器方式

POP3 使用熟知端口 110 110 110IMAP4 使用熟知端口 143 143 143


8、基于万维网 WWW 的电子邮件

通过 浏览器 \color{red}浏览器 浏览器登录(提供用户名和口令) 邮件服务器万维网网站 \color{red}邮件服务器万维网网站 邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。

  • 这种工作模式与 IMAP 很类似,不同的是用户计算机无需安装专门的用户代理程序,只需要使用通用的万维网浏览器。

邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。


8.1、同一服务器

假设用户 AB 都是用网易邮件服务器,如下所示,用户 A 的电子邮件地址与用户 B 的电子邮件地址

image-20230110180838764

用户 A 给用户 B 发送邮件,用户 A 使用游览器登录服务器网站,撰写并发送邮件给用户 B

用户 B 使用游览器登录服务器网站,读取收到的邮件

用户 AB 在发送和接收邮件时与服务器之间使用的是 HTTP 协议

  • 而不需要使用之前介绍的 SMTPPOP3 协议

image-20230110181045231


8.2、不同服务器

假设二者使用不同的邮件服务器,如下所示

image-20230110181125607

用户 A 给用户 B 发送邮件,用户 A 使用游览器登录自己的邮件服务器网站,撰写并发送邮件给用户 C

  • 使用的是 HTTP 协议

用户 A 的邮件服务器使用 SMTP 将邮件发送给用户 C 的邮件服务器

用户 C 使用游览器登录服务器网站,读取收到的邮件

  • 使用的也是 HTTP 协议

image-20230110181305614

9、习题

image-20230110181419720

image-20230110181531266

答案 D


image-20230110181540283

image-20230110181930765

答案:A


image-20230110181942704

image-20230110181954265

答案:D

10、小结

image-20230110182004033

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/159258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Raki的读paper小记:ConTinTin: Continual Learning from Task Instructions

Abstract&Introduction&Related Work 研究任务 Continual Learning from Task Instructions已有方法和相关工作面临挑战创新思路 InstructionSpeak包含两个策略&#xff0c;充分利用task instruction来改善前向转移和后向转移&#xff1a; 一个是从negative的输出中学…

nodejs图片上传/头像上传

项目结构 utils文件夹无用,没文件 前端代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport&…

大屏展示项目开发常用属性

图例legend前言&#xff1a;1.[配置项手册](https://echarts.apache.org/zh/option.html#title)2.[使用手册可以快速入门](https://echarts.apache.org/handbook/zh/get-started/)3.4.一、图例legend1.1 设置图例的位置 &#xff08;上下左右&#xff09;1.1.1 上下&#xff08…

【爪洼岛冒险记】第2站:带你学会:Java中三种输出语句,java中基本数据类型,学会变量,常量,类型转换知识点

&#x1f331;博主简介&#xff1a;是瑶瑶子啦&#xff0c;一名大一计科生&#xff0c;目前在努力学习C进阶、数据结构、算法、JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛&#xff01; &#x1f4dc;所属专栏&#xff1a;爪洼岛冒险记 ✈往期博文回顾&#xff1a;【…

【译】eBPF 和服务网格:还不能丢掉 Sidecar

服务网格以典型的 sidecar 模型为人熟知&#xff0c;将 sidecar 容器与应用容器部署在同一个 Pod 中。虽说 sidecar 并非很新的模型&#xff08;操作系统的 systemd、initd、cron 进程&#xff1b;Java 的多线程&#xff09;&#xff0c;但是以这种与业务逻辑分离的方式来提供服…

主库出问题了,从库怎么办?

在前面的文章中,我和你介绍了 MySQL 主备复制的基础结构,但这些都是一主一备的结构。 大多数的互联网应用场景都是读多写少,因此你负责的业务,在发展过程中很可能先会遇到读性能的问题。而在数据库层解决读性能问题,就要涉及到接下来两篇文章要讨论的架构:一主多从。 今…

Qt之标准对话框(QColorDialog、QInputDialog、QFontDialog)

文章目录QColorDialog使用方式QInputDialog使用方式QFontDialog使用方式提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 QColorDialog QDialog类用于指定颜色的。 使用方式 设置最开始的颜色 setCurrentColor(Qt::red);//其他的颜色Qt::white Qt::…

迪文串口屏(1)-DMG80480C070_03WTC

由于成本缘故&#xff0c;用迪文串口屏去替换项目里的大彩串口屏&#xff0c;样品型号为DMG80480C070_03WTC。不过说句实话&#xff0c;迪文串口屏没有大彩串口屏那么容易上手。产品命名及硬件特性10Pin_1.0mm座子&#xff0c;7.0英寸&#xff0c;800*480分辨率&#xff0c;16.…

机器学习--方差和偏差、Bagging、Boosting、Stacking

目录 一、方差和偏差 数学定义 对公式的解释 减小偏差、方差、噪声 总结 二、Bagging 代码实现 bagging什么时候会变好 不稳定的learner ​总结 三、Boosting Gradient boosting gradient boosting 的代码实现 gradient boosting的效果 ​总结 四、Stacking st…

秒杀项目总结

秒杀就是同一个时刻有大量的请求争抢购买同一个商品&#xff0c;并且完成交易的过程 也就是大量的并发读和并发写 先制作一个增删改查的秒杀系统&#xff0c;但是想让这个系统支持高并发访问就没那么容易了&#xff0c; 如何让这个秒杀系统面对百万级的请求流量不出故障&…

02-final、finally、finalize的区别?

1.final final是java中的修饰符&#xff0c;用于修饰属性&#xff08;变量&#xff09;、方法、类。 1.被final修饰的变量不可以被改变,如果修饰引用,那么表示引用不可变,引用指向的内容可变. 被修饰的常量,在编译阶段会存入常量池中. 2.被final修饰的方法不可以被重写, 被修…

图片播放器的实现1——利用Image2LCD提取图片数据并显示

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 &#xff08;1&#xff09;https://xiefor100.blog.csdn.net/article/details/71941527 &#xff08;2&#xff09;https://xiefor100.blog.csdn.net/article/details/78529519 内容总结 …

2022. 12 青少年软件编程(图形化) 等级考试试卷(四级)

2022年12月 青少年软件编程&#xff08;图形化&#xff09; scratch等级考试试卷&#xff08;四级&#xff09; 分数&#xff1a; 100 题数&#xff1a; 28 一、单选题(共 15题&#xff0c;共 30分) 1.运行下列程序&#xff0c; 变量“结果”的值为&#xff1f; &#xff08; &…

WXSS 如何进行编译?

过往中小企业或技术团队开发一个 App 的时间成本和人力成本居高难下&#xff0c;但是随着微信上线小程序&#xff0c;更像是为这部分群体打开了一扇天窗&#xff0c;此后小程序呈现出井喷式发展的状态&#xff0c;不仅微信&#xff0c;支付宝、百度、抖音等超级 App 都跟上步伐…

【C++核心编程】C++全栈体系(十)

C核心编程 第四章 类和对象 六、继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系&#xff0c;例如下图中&#xff1a; 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考…

华为DHCPv6实验配置

目录 配置AR1作为DHCPv6服务器为PC1分配IPv6地址 配置AR2作为DHCPv6服务器&#xff0c;AR1作为DHCPv6中继器为PC2分配IPv6地址 配置AR3作为DHCPv6 PD服务器为AR1分配地址前缀 什么是DHCP PD 配置AR1作为DHCPv6服务器为PC1分配IPv6地址 AR1 DHCPv6服务器端配置 ipv6 …

解决N+1问题的另一种方法 - 关联的多结果集ResultSet

如果我的博客对你有帮助&#xff0c;欢迎进行评论✏️✏️、点赞&#x1f44d;&#x1f44d;、收藏⭐️⭐️&#xff0c;满足一下我的虚荣心&#x1f496;&#x1f64f;&#x1f64f;&#x1f64f; 。 从版本 3.2.3 开始&#xff0c;MyBatis 提供了另一种解决 N1 查询问题的方…

C语言——位段

文章目录思维导图&#xff1a;一. 什么是位段二.位段的内存分配三.位段的跨平台问题四.位段的应用结语:思维导图&#xff1a; 一. 什么是位段 位段的声明和结构体类似&#xff0c;但是有2个不同&#xff1a; 位段的成员必须是int、unsigned int 或 signed int(在很多平台上cha…

python自学之《21天学通Python》(9)——基于tkinter的GUI编程

第12章 基于tkinter的GUI编程 Windows的图形用户界面非常方便用户操作&#xff0c;因此&#xff0c;Windows操作系统得到了广大个人计算机用户的欢迎。在Python中&#xff0c;也可以编写美观的GUI界面应用程序与项目。tkinter是Python自带的用于GUI编程的模块&#xff0c;tkin…

【论文速递】CVPR2022 - 学习 什么不能分割:小样本分割的新视角

【论文速递】CVPR2022 - 学习 什么不能分割:小样本分割的新视角 【论文原文】&#xff1a;Learning What Not to Segment: A New Perspective on Few-Shot Segmentation 获取地址&#xff1a;https://openaccess.thecvf.com/content/CVPR2022/papers/Lang_Learning_What_Not_…