邮件实现详解(一)------邮件发送的基本过程与概念

  相信大家在日常工作生活中少不了和邮件打交道,比如我们会用邮件进行信息交流,向上级汇报日常工作;再比如大家熟悉的某个WEB系统注册阶段,通常会有一个功能,点击发送到目标邮箱的链接完成账户激活。但是邮件发送的原理是什么?邮件是如何发送的呢?本系列教程将会讲解邮件的基本常识与概念,邮件的协议以及邮件服务器的工作原理,然后用JavaMail 发送邮件的基本实现过程,邮件内嵌图片等高级邮件技巧。相信大家看完后,一定会有所收获。

1、电子邮件的发送和接收过程

  和以往博客一样,LZ这里先给出用户A从QQ邮箱发送邮件到用户B163邮箱的图示,然后对图示的过程进行详细的介绍:

  图示的六个步骤分别进行如下的说明:

  ①、用户A的电子邮箱为:xx@qq.com,通过邮件客户端软件写好一封邮件,交到QQ的邮件服务器,这一步使用的协议是SMTP,对应图示的①;

  ②、QQ邮箱会根据用户A发送的邮件进行解析,也就是根据收件地址判断是否是自己管辖的账户,如果收件地址也是QQ邮箱,那么会直接存放到自己的存储空间。这里我们假设收件地址不是QQ邮箱,而是163邮箱,那么QQ邮箱就会将邮件转发到163邮箱服务器,转发使用的协议也是SMTP,对应图示的②;

  ③、163邮箱服务器接收到QQ邮箱转发过来的邮件,也会判断收件地址是否是自己,发现是自己的账户,那么就会将QQ邮箱转发过来的邮件存放到自己的内部存储空间,对应图示的③;

  ④、用户A将邮件发送了之后,就会通知用户B去指定的邮箱收取邮件。用户B会通过邮件客户端软件先向163邮箱服务器请求,要求收取自己的邮件,对应图示的④;

  ⑤、163邮箱服务器收到用户B的请求后,会从自己的存储空间中取出B未收取的邮件,对应图示⑤;

  ⑥、163邮箱服务器取出用户B未收取的邮件后,将邮件发给用户B,对应图示的⑥;最后三步用户B收取邮件的过程,使用的协议是POP3;

  上面的步骤可能大家不太明白,这里面出现了很多名词,比如邮件客户端软件,邮件服务器,SMTP和POP3协议(邮件传输协议)等等。不明白没关系,接下来我们来详细介绍这些名词。

1、邮件服务器

  图示出现了两个邮件服务器,QQ和163邮件服务器。用户想要在网上收发邮件,必须要有专门的邮件服务器。邮件服务器我们可以假想为现实生活中的邮局。

  如果按功能划分,邮件服务器可以划分为两种类型:

  ①、SMTP邮件服务器:用户替用户发送邮件和接收外面发送给本地用户的邮件,对应上图的第一、二步。它相当于现实生活中邮局的邮件接收部门(可接收普通用户要投出的邮件和其他邮局投递进来的邮件)。

  ②、POP3/IMAP邮件服务器:用户帮助用户读取SMTP邮件服务器接收进来的邮件,对应上图的第六步。它相当于专门为前来取包裹的用户提供服务的部门。

2、电子邮箱

  电子邮箱也称为E-mail地址,比如用户A的xx@qq.com,和用户B的xx@163.com。用户能通过E-mail地址标识自己发送的电子邮件,同时也可以通过这个地址接收别人发来的电子邮件。电子邮箱需要到邮件服务器进行申请,也就是说,电子邮箱其实就是用户在邮件服务器上申请的账户。邮件服务器会把接收到的邮件保存到为该账户所分配的邮箱空间中,用户通过用户名密码登录到邮件服务器查收该地址已经收到的邮件。一般来讲,邮件服务器为用户分配的邮箱空间是有限的。

3、邮件客户端软件

  我们可以直接在网站上进行邮件收发,也可以用邮件客户端软件。比如常见的FoxMail,Outlook Express。邮件客户端软件通常集邮件撰写,发送和收发功能于一体,主要用于帮助用户将邮件发送给SMTP邮件服务器和从POP3/IMAP邮件服务器读取用户的电子邮件。

4、邮件传输协议

  电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,那就必须要遵守一定的规则,这个规则就是邮件传输协议。下面我们分别简单介绍几种协议(后面会详细讲解):

  ①、SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。

  ②、POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则。

  ③、IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则。

  我们说所有的邮件服务器和邮件客户端软件程序都是基于上面的协议编写的。

5、总结  

  本篇博客我们给出了电子邮件发送和接收的图示讲解,以及对于邮件服务器、邮件客户端软件、邮件传输协议的简单介绍。下一篇博客我们将重点讲解邮件的传输协议,并手动通过SMTP协议发送邮件,POP3协议接收邮件!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

MySQL密码加密认证的简单脚本

mysql: [Warning] Using a password on the command line interface can be insecure.

1045
来自专栏FreeBuf

如何使用Burp和Magisk在Android 7.0监测HTTPS流量

在任何环境下的移动端安全审计中,肯定都会涉及到拦截HTTPS流量。通过向Android应用添加自定义的CA,我们就可以轻松完成HTTPS流量拦截了。但是对于A...

22510
来自专栏FreeBuf

如何在SSH通道中隐藏OpenVPN流量?

传统防火墙会根据目标 IP 地址和端口号来屏蔽连接,但更高级的防火墙会使用深度包检测(DPI)技术或者状态包检测(SPI)技术来识别不同类型的加密算法和VPN协...

5356
来自专栏程序员宝库

SSH 登录流程分析

本文首发于 https://jaychen.cc 作者:jaychen(https://segmentfault.com/u/chenjiayao) 写一篇短文...

4688
来自专栏贾老师の博客

OAuth 协议详解

1092
来自专栏Linyb极客之路

HTTPS安全最佳实践

HTTPS对于保护你的网站至关重要。但是你还需要避免许多陷阱 1. 没有混合内容

1453
来自专栏云计算教程系列

为你的CVM设置SSH密钥吧!

认证是用于证明您有权执行某项操作的信息,例如登录到系统。认证通道是身份验证系统向用户传递因素或要求用户回复的方式。通俗的来讲,密码和安全令牌就是身份验证证明,计...

1502
来自专栏测试开发架构之路

电子邮件工作机制

相关的几个协议 -SMTP(Simple Mail Transfer Protocol) -POP(Post Office Protocol) -IMAP(在不...

2968
来自专栏云计算

Kubernetes的服务网格(第3部分):对通信进行加密

在本文中,我们将展示如何在不修改当前应用代码的前提下来为所有的服务到服务的(service-to-service) HTTP 调用提供 TLS 支持。

3938
来自专栏Kirito的技术分享

八幅漫画理解使用JSON Web Token设计单点登录系统

博主前言 这篇转载的文章和上一篇《JSON Web Token - 在Web应用间安全地传递信息》文章均为转载,是我个人在研究 jwt 时浏览下来发现的两篇质...

3305

扫码关注云+社区