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

  相信大家在日常工作生活中少不了和邮件打交道,比如我们会用邮件进行信息交流,向上级汇报日常工作;再比如大家熟悉的某个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 条评论
登录 后参与评论

相关文章

来自专栏轮子工厂

常见web网站访问错误代码 |怎么又404了!!!

做web开发的同学在开发的过程中应该经常会遇到一些错误的访问代码,由其是错误代码404,如果访问一下比较low的网站的时候,经常就会遇到浏览器端显示:“404无...

672
来自专栏北京马哥教育

20个可能你不知道Linux网路工具

如果要在你的系统上监控网络,那么使用命令行工具是非常实用的,并且对于 Linux 用户来说,有着许许多多现成的工具可以使用,如: nethogs, ntopng...

36810
来自专栏零基础使用Django2.0.1打造在线教育网站

关于HTTP不能不说的秘密

超文本传输协议(HTTP,HyperText Transfer Protocol) 是互联网上应用最为广泛的一种网络协议。所有WWW文件都必须遵守这个标准。设计...

673
来自专栏企鹅号快讯

MITM6:用IPv6攻陷IPv4网络的工具

随着IPv6概念的提出,互联网上针对IPv6协议的使用也日渐增多,但即便如此IPv6在公司内部却并不受欢迎,很少会有公司使用IPv6。然而,大多数公司可能都忽略...

2587
来自专栏CLS日志服务

腾讯云CLS日志服务应用

*LogListener: 是腾讯云日志服务提供的日志采集 Agent,通过在服务器上安装loglistener可以实时采集指定路径上的日志,并对日志原始数据进...

901
来自专栏运维技术迷

VMware下安装MS-DOS6.2

话说微软的操作系统目前都已经更新到了win10和win server2012了,可是MS-DOS系统我还真没有用过。所以今天闲来无事就来研究了一下MS-DO...

2985
来自专栏个人分享

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特...

1215
来自专栏linux驱动个人学习

硬盘写到一半时断电,文件系统里会发生什么?

知乎问题: 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗? 更进一步的, 文件系统如何保证事务性, 会不...

2714
来自专栏架构师小秘圈

基于dubbo框架,如何进行大型微服务系统架构设计?

一,为什么需要微服务框架 Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的...

3784
来自专栏散尽浮华

Nginx+upstream针对后端服务器容错的运维笔记

熟练掌握Nginx负载均衡的使用对运维人员来说是极其重要的!下面针对Nignx负载均衡upstream容错机制的使用做一梳理性说明: 一、nginx的upstr...

6059

扫码关注云+社区