【七日打卡】JavaMail的使用-02邮件源内容解析

338 阅读2分钟

前言

昨天的文章里我们讲述了邮件的三种协议,并且在最后用一张图片展示了邮件的发送过程,今天让我们在深入一点,让我们看看邮件在服务器之间是如何传送的,为之后的解析邮件和发送邮件打下基础。

邮件源内容解析

如图这是我刚发送给自己的一封邮件,然后我们把这封邮件的.eml文件保存下来,用一个文字编辑软件打开

看到上图中我标注的这些信息了吗,其实这些就包含了上面的时间,发件人,收件人,主题,这封邮件里的内容格式,图片,附件。

整个邮件其实是分成很多块的,而每个块又是嵌套的,让我们再来看张图

这其实就是我刚才发送的那封邮件的示意图让,让我们对照着去eml文件里看看。 首先是这一部分

对应的是Multtipart的那一部分,为什么这么说呢,看到boundary后面的那串编码了吗,boundary的意思是边界界限也就是说这部分的界限在哪,然后在整个邮件里搜一下这串代码发现

一直到结尾,也就是说中间的那些东西都是包含在它里面的。

然后让我们再看中间的东西

text/html 不用多说这肯定是正文了。

这两个都是image/png,应该怎么去区分,注意它里面有一个Content-Dispostion的报文段,Disposition大致的意思就是这东西应该放在哪,inlin在线里,那不就是在文章里吗,attachment更明显了,直接都明说了是附件。

当然这是比较简单的邮件形式,更加复杂的就是不停的嵌套,一环套一环,邮件里面套邮件,所以只要掌握了这种基础的其他不过就是用个递归去处理罢了。

好了,邮件源内容的解析就这么多让我们来总结一下:

  1. 邮件在传输时其实时和http传输时类似的都要编码,都有消息头来描述这部分的信息。
  2. 邮件的组成其实是一个大容器里面装着正文,内嵌图片,附件的形式。

了解了这些我们就可以很容易的去编写邮件解析程序和邮件发送程序了。