在了解电子邮件之前,我们先看看传统邮件是如何运作的。假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢?

首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去。

信件会从就近的小邮局转运到大邮局,再从大邮局往别的城市发,比如先发到天津,再走海运到达香港,也可能走京九线到香港,但是你不用关心具体路线,你只需要知道一件事,就是信件走得很慢,至少要几天时间。

信件到达香港的某个邮局,也不会直接送到朋友的家里,因为邮局的叔叔是很聪明的,他怕你的朋友不在家,一趟一趟地白跑,所以,信件会投递到你的朋友的邮箱里,邮箱可能在公寓的一层,或者家门口,直到你的朋友回家的时候检查邮箱,发现信件后,就可以取到邮件了。

电子邮件的流程基本上也是按上面的方式运作的,只不过速度不是按天算,而是按秒算。

现在我们回到电子邮件,假设我们自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@sina.com(注意地址都是虚构的哈),现在我们用Outlook或者Foxmail之类的软件写好邮件,填上对方的Email地址,点“发送”,电子邮件就发出去了。这些电子邮件软件被称为MUA:Mail User Agent——邮件用户代理。

Email从MUA发出去,不是直接到达对方电脑,而是发到MTA:Mail Transfer Agent——邮件传输代理,就是那些Email服务提供商,比如网易、新浪等等。由于我们自己的电子邮件是163.com,所以,Email首先被投递到网易提供的MTA,再由网易的MTA发到对方服务商,也就是新浪的MTA。这个过程中间可能还会经过别的MTA,但是我们不关心具体路线,我们只关心速度。

Email到达新浪的MTA后,由于对方使用的是@sina.com的邮箱,因此,新浪的MTA会把Email投递到邮件的最终目的地MDA:Mail Delivery Agent——邮件投递代理。Email到达MDA后,就静静地躺在新浪的某个服务器上,存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为电子邮箱。

同普通邮件类似,Email不会直接到达对方的电脑,因为对方电脑不一定开机,开机也不一定联网。对方要取到邮件,必须通过MUA从MDA上把邮件取到自己的电脑上。

所以,一封电子邮件的旅程就是:

发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人

有了上述基本概念,要编写程序来发送和接收邮件,本质上就是:

  1. 编写MUA把邮件发到MTA;

  2. 编写MUA从MDA上收邮件。

发邮件时,MUA和MTA使用的协议就是SMTP:Simple Mail Transfer Protocol,后面的MTA到另一个MTA也是用SMTP协议。

收邮件时,MUA和MDA使用的协议有两种:POP:Post Office Protocol,目前版本是3,俗称POP3;IMAP:Internet Message Access Protocol,目前版本是4,优点是不但能取邮件,还可以直接操作MDA上存储的邮件,比如从收件箱移到垃圾箱,等等。

邮件客户端软件在发邮件时,会让你先配置SMTP服务器,也就是你要发到哪个MTA上。假设你正在使用163的邮箱,你就不能直接发到新浪的MTA上,因为它只服务新浪的用户,所以,你得填163提供的SMTP服务器地址:smtp.163.com,为了证明你是163的用户,SMTP服务器还要求你填写邮箱地址和邮箱口令,这样,MUA才能正常地把Email通过SMTP协议发送到MTA。

类似的,从MDA收邮件时,MDA服务器也要求验证你的邮箱口令,确保不会有人冒充你收取你的邮件,所以,Outlook之类的邮件客户端会要求你填写POP3或IMAP服务器地址、邮箱地址和口令,这样,MUA才能顺利地通过POP或IMAP协议从MDA取到邮件。

以上有部分内容来自廖雪峰老师的文章

电子邮件的收发及传输过程解析相关推荐

  1. android voip通话音频数据流传输过程解析

    我在前面几篇博客中已经描述了sip通话的建立过程,以及基本代码实现流程,但是我们真正的目的是基于sip协议进行语音通话,本文分析这些音频流是如何建立和传输的. 与音频流传输相关的两个java类为Aud ...

  2. OSI参考模型下电子邮件传输过程

    在OSI参考模型下的电子邮件传输过程 电子邮件的工作过程遵循客户---服务器模式.每份电子邮件的发送都要涉及到发送方和接收方,发送发构成客户端,而接收方构成服务器.其主要用到的协议由SMTP和POP3 ...

  3. 邮件传输过程,MUA,MTA,MDA的概念

    邮件传输过程.MUA.MTA.MDA MUA outlook.thunderbird.Mac Mail.mutt MTA sendmail.postfix MDA procmail.dropmail ...

  4. 【SRIO】3、RapidIO串行物理层的包传输过程

    目录 一.引言 二.串行物理层的PCS层与PMA层 2.1 PCS层的功能 2.2 PMA层的功能 2.3 术语定义 2.3 8B/10B传输码 2.4 字符和码组记号 2.5 运行不一致(Runni ...

  5. 【计算机网络】HTTP 与 HTTPS ( HTTP 在网络各个层级的传输过程 | HTTPS 工作流程 | HTTPS 弊端 )

    文章目录 一.HTTP 在网络各个层级的传输过程 二.HTTPS 工作流程 1.中间人篡改服务器下发的数字证书 2.中间人冒充服务器端 三.HTTPS 弊端 一.HTTP 在网络各个层级的传输过程 应 ...

  6. ip、子网掩码、默认网关以及传输过程

    IP: IP地址:由网络部分 和 本机部分 组成 比如IP地址为 192.168.3.12 对应的二进制为 11000000 10101000 00000011 00001100 子网掩码: 子网掩码 ...

  7. 后端传输流跨域_Java开发中解决Js的跨域问题过程解析

    这篇文章主要介绍了Java开发中解决Js的跨域问题过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主流方法有JSONP和CORS两种,这里记 ...

  8. 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...

    老李推荐:第8章2节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-解析处理命令行参数 MonkeyRunnerStarter是MonkeyRunner启动时的入 ...

  9. 图解数据在网络中的传输过程

    数据在网络中的传输过程 在计算机网络当中,数据是怎么样保证准确的从客户端发送到服务器端的,这是本文探究的重点. 下图是本文中使用的网络拓扑图,数据从客户端发送给服务器端. 客户端各层对数据的封装 ja ...

  10. PPPoE拨号过程解析

    原文地址:PPPoE拨号过程解析 作者:nike PPPoE(PPP overEthernet)是在以太网上建立PPP连接,由于以太网技术十分成熟且使用广泛,而PPP协议在传统的拨号上网应用中显示出良 ...

最新文章

  1. AS-External-LSA
  2. 白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格
  3. HTTP 错误 403.9 - 禁止访问:连接的用户过多 XP IIS服务器连接数的修改
  4. 1.16 static关键字(静态变量和静态方法)
  5. mysql使用CONCAT()函数拼接字符串
  6. CPU的内部架构和工作原理
  7. [Linux]-Shell编程与规范
  8. spring注解 annotation
  9. python常用字符串_Python中最常用的字符串方法!
  10. 花了一天的时间给粉丝做了一个小米官网(高仿)
  11. OFFICE没有仿宋GB2312的字体
  12. 获取谷歌浏览器Chrome缓存目录
  13. Iterator方法详解
  14. 分享一套PHP的cms系统,免授权可商用,零元CMS企业官网系统,采用laravel+admin架构的企业建站系统
  15. 基于VOIP的SIP协议分析
  16. 3D轮廓检测技术讲解
  17. Python案例之QQ空间自动登录程序实现
  18. Typora+阿里云OSS(将图片上传到阿里云服务器上)
  19. HashMap的四种遍历方法,及效率比较(简单明了)
  20. 在 SAP 故乡,感受「边缘智能」之变

热门文章

  1. 计算机重装系统 英语,重装系统还看不懂BIOS?中英文详细对照表,进入BIOS如此简单...
  2. 如何处理出差或放假在家办公加密文件打不开?
  3. 工控: 西门子STEP 7安装和连接S7-200遇到的问题
  4. colab挂载谷歌云盘出错
  5. colab 挂载谷歌云盘
  6. 如何关闭迅雷频繁自动弹出更新到新版本的提示
  7. java json.stringify_浅谈 JSON.stringify 方法
  8. 安卓苹果均兼容的移动版CAD看图软件——迅捷CAD看图
  9. 微信信息轰炸【简易版】
  10. 光环大数据python爬虫