【从0开始学习计算机网络】| 邮件协议入门:SMTP、POP3、IMAP

作者:一条泥憨鱼日期:2026/9/10

🌈个人主页:一条泥憨鱼(欢迎各位大佬莅临)

🎬精选专栏传送门:

❄️《数据结构》 ❄️《AI与Agent那些事》

❄️《从0开始学计算机网络》 ❄️《后端开发》

你有没有想过这么一个问题:每天上班第一件事就是打开邮箱客户端,或者掏出手机刷一下 Gmail,看到新邮件弹出来,顺手回一封。整个过程行云流水,但你有没有停下来问过——我点下"发送"按钮的那一瞬间,这封邮件到底经历了什么?它是怎么穿过网线、越过服务器,最后出现在对方手机上的?

这个问题的答案,就藏在三个缩写里:SMTP、POP3、IMAP。

别被这三个词吓到,它们本质上就是三个"邮局规矩"。今天把这套规矩讲明白。等你下次配置邮件客户端,看到这三个词的时候,心里就有底了。

先搞清楚:邮件是怎么从 A 到 B 的?

我们先把"电子邮件的传输"想象成"传统邮局的寄信"。

你写了一封信,想寄给远方的朋友。你会怎么做?把信丢进邮筒。邮递员把信收走,送到你本地的邮局。本地邮局根据地址,把信转送到对方城市的邮局。对方邮局再把信投递到朋友的邮箱里。朋友打开邮箱,把信取出来看。

电子邮件的流程,几乎一模一样。只不过"邮筒""邮局""邮箱"都变成了服务器和软件:

- 你用的邮件客户端(比如 Outlook、手机自带邮件 App)——就是"你本人"

- 你的邮件发送服务器(比如 QQ 邮箱的 smtp.qq.com)——就是你"本地的邮局"

- 对方的邮件接收服务器(比如 Gmail 的服务器)——就是"对方城市的邮局"

- 对方的邮件客户端——就是"你的朋友"

一封邮件从你手里发出去,到对方看到,中间要经过四段路程:

1. 你的客户端 → 你的发送服务器

2. 你的发送服务器 → 对方的接收服务器

3. 对方的接收服务器 → 对方的客户端(这一步其实是对方主动来"取"的)

注意看,前三步是"送",最后一步是"取"。这个区别很重要。因为负责"送"的协议和负责"取"的协议,是完全不同的两套东西。

现在,这三个缩写的分工已经浮出水面了:

- SMTP负责"送"——管第一段和第二段路

- POP3 和 IMAP负责"取"——管第三段路

下面一个个说。

SMTP——负责"寄出去"的协议

SMTP 的全称是 Simple Mail Transfer Protocol,简单邮件传输协议。

名字里有个"传输",你就知道它是干搬运的活。具体来说,SMTP 管两件事:

第一,把你客户端上写好的邮件,推到你的发送服务器上。

第二,把你的发送服务器上的邮件,转发到对方的接收服务器上。

注意我用了一个词——"推"。

SMTP 是典型的"推"协议。它就像那个骑着摩托车从你手里接过信,然后一路狂飙送到对方邮局的快递员。它只管把信送到目的地邮局,至于对方邮局怎么把信交到收件人手里,它不关心,也管不着。

给你举个具体点的例子。假设你用 QQ 邮箱给一个 Gmail 地址发邮件。你点下发送后,发生的事是这样的:

1. 你的 QQ 邮箱客户端(网页版也好,手机 App 也好),通过 SMTP 协议,把邮件推到 QQ 的邮件服务器上。这一步用的服务器地址通常是 smtp.qq.com。

2. QQ 的邮件服务器一看收件人是 Gmail 的地址,知道自己送不到,于是通过 SMTP 协议,把邮件转发给 Gmail 的服务器。

3. Gmail 的服务器收到邮件,存下来,等着收件人来取。

整个过程,SMTP 出场了两次。这就是为什么你在配置任何邮件客户端的"发送服务器"时,看到的都是 SMTP 开头的地址——smtp.qq.com、smtp.163.com、smtp.gmail.com。

关于端口,你可能会在配置界面看到 25、465、587 这几个数字。简单记一下就行:25 是 SMTP 的老端口,明文传输,现在很多服务器默认关了;465 和 587 是加密传输用的,其中 587 是目前最主流的提交端口。你不需要记死,客户端一般会帮你选好。

一句话总结:SMTP 只管把邮件"寄出去",不管"收进来"。

POP3——把邮件"下载"到本地

邮件到了对方的服务器上,对方的客户端怎么把它拿下来看?这就是 POP3 和 IMAP 的事了。

POP3 的全称是 Post Office Protocol version 3,邮局协议第三版。

名字里有"邮局",你就把它想象成邮局里的一个柜台。POP3 的工作方式,特别像你亲自跑到邮局,跟柜台说:"把我的信都给我。"然后你把信全部抱回家,邮局里的信箱就空了。

对,你没看错。POP3 的核心特点就是:把邮件从服务器上下载到本地设备,然后默认把服务器上的邮件删掉。

这个设计在互联网早期特别合理。那时候大家基本只有一台电脑,邮件下载到本地,服务器上删掉,省存储空间,而且本地打开速度快,没有网络也能看已经下载的邮件。

但放到今天,POP3 的缺点就很明显了:

- 你在手机上用 POP3 收了邮件,服务器上的邮件就被删了。等你回到办公室打开电脑想再看一遍?没了。

- 你在电脑上把一封邮件标记为"已读",手机上是不知道的。因为两边各存各的,互不通信。

- 你想在手机上看一封 3 年前的旧邮件?对不起,那封邮件当年已经被你手机 POP3 下载后删掉了。

所以,POP3 现在比较适合的场景是:**你就一台设备,而且希望邮件只存在这台设备上,不想在服务器上留底。**比如你有个临时邮箱,想批量把邮件拉下来归档,拉完服务器清空,那 POP3 就很顺手。

POP3 的默认端口是 110,加密版本是 995,知道一下就行。

总结:POP3 是把邮件"下载"到本地,下载完服务器上通常就没了。

IMAP——邮件"留在服务器上"

IMAP 的全称是 Internet Message Access Protocol,互联网消息访问协议。

如果说 POP3 是"把信取回家",那 IMAP 就是"在邮局给你开了一个私人信箱"。你的所有邮件都存放在邮局(服务器)里,你手里拿着的只是一把钥匙。你想看哪封信,就打开信箱翻一翻;看完了,信还留在信箱里,下次换个钥匙(换台设备)照样能看。

IMAP 的核心特点:邮件始终保存在服务器上,客户端只是"查看"服务器上的一份副本。

这意味着什么?意味着多设备同步变得极其自然:

- 你在手机上把一封邮件标记为"已读",这个状态会同步到服务器上。等你打开电脑,那封邮件在电脑上也是"已读"的。

- 你在电脑上把一封邮件拖进"工作"文件夹,手机上打开邮箱,那封邮件也在"工作"文件夹里。

- 你所有的邮件都安安静静地躺在服务器上,不管你换几台设备,只要登录同一个邮箱账号,看到的都是同一份邮件。

这就是 IMAP 和 POP3 最本质的区别:POP3 是"移动"邮件(从服务器搬到本地),IMAP 是"映射"邮件(服务器是唯一真源,客户端只是镜子)。

当然,IMAP 也不是没有代价。因为邮件都留在服务器上,你的邮箱存储空间会越用越满(现在 Gmail、QQ 邮箱都给了很大的免费空间,一般够用)。另外,IMAP 需要联网才能看到邮件内容,纯离线状态下你只能看到之前客户端缓存过的内容。

IMAP 的默认端口是 143,加密版本是 993。

总结:IMAP 让邮件留在服务器上,所有设备随时同步查看。

三个协议放一起对比 + 实际选择建议

说了这么多,我们来个痛快的对比表,一眼看明白:

| 对比维度 | SMTP | POP3 | IMAP |

| 职责 | 发送邮件 | 接收邮件 | 接收邮件 |

| 邮件存储位置 | 不存储,只管转发 | 下载到本地后服务器删除 | 始终保存在服务器 |

| 多设备同步 | 不涉及 | 不支持 | 支持(已读/已删/移动均同步) |

| 离线访问 | 不涉及 | 可以看已下载的邮件 | 只能看缓存过的邮件 |

| 适用场景 | 所有发信需求 | 单设备 + 希望本地留存 | 多设备 + 需要随时访问旧邮件 |

看完这个表,配置邮件客户端的时候怎么选

日常使用,选 IMAP。 因为你肯定不止一台设备——手机、平板、公司电脑、家里电脑。IMAP 能让你在任何设备上看到一模一样的邮箱状态,这是现代人的刚需。

POP3 用在哪? 如果你有一个不太重要的邮箱,比如注册网站用的垃圾邮箱,你想把所有邮件一次性拉到电脑里存档,然后让服务器清空,那 POP3 就是为你准备的。

**SMTP 就不用选了。**不管你是用 IMAP 还是 POP3 收邮件,发送邮件永远是 SMTP。所以你会发现,配置邮箱时,"接收邮件服务器"让你在 POP3 和 IMAP 之间二选一,而"发送邮件服务器"永远是 SMTP 开头的地址。

最后送大家一个口诀,特别好记:

> 发邮件用 SMTP,收邮件用 POP3 或 IMAP;要同步就选 IMAP,要本地就选 POP3。

最后说两句

现在你已经知道这三个协议各自是干嘛的了。下次配置 Outlook 或者手机邮件 App,再看到 SMTP、POP3、IMAP 这三个词,就不会再一脸懵了——你甚至能跟同事解释,为什么你的邮件在手机上读了,电脑上也会显示已读(因为用的是 IMAP)。

如果你想再深入一步,有个特别有体感的玩法:用命令行 telnet 手动连上一个 SMTP 服务器,亲手输入几条命令"手写"一封邮件发出去。那种感觉,比任何教程都来得直观。等你有兴趣了,可以自己搜一下"telnet smtp 发送邮件",试试看。

邮件协议的世界,其实就这么大。搞懂了这三个词,你就已经入门了。


《【从0开始学习计算机网络】| 邮件协议入门:SMTP、POP3、IMAP》 是转载文章,点击查看原文。


相关推荐


设计一个多计时任务的任务管理功能
剪刀石头布啊2026/9/2

前言 我们想写一个功能,能够不停的添加计时任务执行,且每个任务都支持自定义延迟时间做某件事件,平时我们可能直接setTimeout就完事了,有多个少个任务开启多少个setTimeout,可是这样真的行么,同时开启这么多timeout不仅仅延迟会很大,性能也会有折扣 实际上我们只使用一个setTimeout计时器,就可以实现这种多个自定义延迟时间的任务功能 实现步骤 只需要下面的步骤即可: 待办任务处理:将待办任务存放到队列中,根据延迟时间计算出最终执行时间戳,任务可有序,可无序,处理方式不同,


AI 想放弃了,人没有 -- 肘子的 Swift 周报 #150
东坡肘子2026/8/25

AI 想放弃了,人没有 最近,Linus Torvalds 在调试一个 Intel Xe GPU 驱动问题时,经历了一场被他自己称为“debug session from hell”的漫长排查。最终的修复简单得有些不可思议:把一处 round_up() 改成 round_down()。但为了找到这一行代码,他前后添加了 24 个调试 patch,启动了 18 次 kernel。其中大量繁琐工作,都是在 AI 的帮助下完成的。 这个故事最有意思的地方并不是“AI 帮 Linus 修复了 Linux


DeepSeek API涨价观察:AI行业从免费到收费的转折点
Yoyo Chen1802026/8/12

北大燕姐 · 商业观察 8月6日,DeepSeek一纸公告,AI圈炸了。 短短几行字:API服务价格将整体上调,预计涨幅较大。评论区一片哀嚎,四个字刷了屏:AI免费时代,结束了。 别慌。恰恰相反,我想说一句反话:普通人的机会,来了。 只是机会从来不会平均分配,它只给看得懂的人。这半年,北大燕姐帮企业主和内容创作者做IP定位,见过太多人:工具用得很溜,方向一塌糊涂。AI涨价这一天,恰好是一面照妖镜,照出谁在裸泳,谁早有准备。 一、先把事件捋清楚 8月1日:单日Token处理量破8万亿,


第三人称——骑马系统以及交互动画
神龙天舞20012026/8/3

第三人称——骑马系统以及交互动画 大家好,今天我们来聊一个在游戏开发里特别有“内味儿”的话题——第三人称视角下的骑马系统,以及那些让玩家觉得“哇,这马好听话”的交互动画。骑马不是简单的“把角色模型放到马背上”,它涉及到动画状态机、物理交互、摄像机跟随、甚至还有“骑手重心偏移”这种细节。这篇文章我会用最接地气的方式,把核心逻辑拆开揉碎,配上能跑的代码示例,让你看完就能上手做原型。## 一、骑马系统的核心:不是“骑上去”,而是“合体”很多新手做骑马,就是把玩家角色(Humanoid)的骨骼绑定到马(


Go Modules 包管理详解:go.mod、go.sum 与依赖管理
程序员爱钓鱼2026/7/26

Go 编程实战系列(五) 上一篇《第一个 Go 程序:Hello World》中,我们创建了第一个 Go 项目,并执行过这样一条命令: go mod init hello-go 执行完成后,项目目录中会出现一个 go.mod 文件。 很多初学者第一次看到它时可能会疑惑: go.mod 到底有什么用?Go 项目的第三方库从哪里下载?为什么有时还会出现 go.sum?go get 和 go mod tidy 又有什么区别? 这些问题都与 Go Modules 有关。 Go Modules 是现代


Alibaba买家账号运营指南:注册流程、账号养护及多账号管理实践
xiaobaihuoke2026/7/18

在跨境电商行业中,很多企业把重点放在卖家账号运营、产品推广以及广告投放上,但实际上,一个稳定、高质量的买家账号,同样是跨境运营体系中不可忽视的重要资源。 无论是进行海外市场调研、寻找供应商、分析行业趋势,还是获取产品报价,一个真实、活跃的Alibaba国际站买家号,都能够帮助企业更加深入了解市场。 然而,随着Alibaba平台风控机制不断完善,买家账号的运营已经不再是简单注册即可使用。账号注册后的行为习惯、活跃程度以及采购轨迹,都会影响账号后续的使用价值。 因此,买家号运营逐渐形成了一个完


再见Fable 5,OpenAI出手了!GPT-5.6真香~
AI袋鼠帝2026/7/10

大家好,我是袋鼠帝 我最近在疯狂使用Fable 5,好用是好用,就是太贵啦! 不过不是在Claude 官方使用的,因为我最新的一个号,在7月1号又tm被封了,服了都(已经记不清是第几个了) 天下苦A社久矣.. 所以,我最近都是在Cursor上用的Fable 5,虽然我下血本充了200$的订阅,但跑了两天Fable 5,总用量就已经超过48%了。。。 整的我都有点不敢用了,除非核心任务,其他时候我都只敢开启auto模式(自动选择模型) 就是这么憋屈。 然后今天凌晨,OpenAI终于出手了! G


从零构建ReAct智能体:让AI学会边想边做
树獭非懒2026/7/2

前言 大语言模型已经能写诗、编程、做数学题,但它有一个根本性的短板:无法与外部世界交互。你问它"今天深圳天气怎么样",它只能诚恳地告诉你"我的知识截止到某某日期"——不是它不想回答,是它根本没有"看天气"这个动作能力。 这就是智能体(Agent)要解决的核心问题:让 LLM 不仅能想,还能做。 业界现有的智能体框架(LangChain、LlamaIndex 等)已经将这套机制封装得非常完善,但它们的高度抽象也让很多人停留在"调包侠"阶段,对背后的运行机制一知半解。本文的目标,是带你从零构建一个


Swift 还让你 Excited 吗?-- 肘子的 Swift 周报 #141
东坡肘子2026/6/23

Swift 还让你 Excited 吗? 上周,Reddit 上一篇题为《Is anyone else excited by Swift progress as the language?》的帖子引发了不少讨论。WWDC 2026 上,Apple 明确表示,Swift 已被用于 WebKit 关键组件、QUIC 网络栈、字体渲染、驱动与固件。发帖者据此认为,Swift 正在向核心操作系统内核迈进,并将这一幕视为 2014 年"高级系统编程语言"承诺的兑现。评论区的讨论则很快从“是否兑现了承诺”,


别再让业务层裸奔 CarPropertyManager 了!谈谈汽车车载核心服务的架构封装
潜龙勿用之化骨龙2026/6/15

前言 Android Automotive 项目中,CarPropertyManager 几乎是访问一切车辆状态的入口。但在真实项目里,如果直接在 ViewModel 或业务层大量使用它,代码会变得难以维护、难以测试,也完全不符合 现代Android 架构 的分层思想。 本文将从零开始,梳理一套基于 Clean Architecture 的 CarPropertyManager 封装方案,涵盖: 为什么不能直接用 如何用抽象基类统一封装 callbackFlow 的正确姿势 Flow 与 su

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读