前言
感谢掘金这次的活动,让我终于有勇气开始写文章了,这个选题可能有点偏。选这个一方面是为了总结一下刚入职半年来的一些积累,另一方面也是系统的整理一下,这方面的资料网上确实少而且给出的资料里其实也是有坑的,万一之后也有人像我一样被分去搞邮件系统,看看这个不说能让你精通,至少你不会像我一样被一个其实很简单的问题困扰很久。
规划
这七天的文章规划大致是
邮件协议的介绍,了解一下三种邮件协议以及之间的区别
邮件源内容的解析以及初始化配置
邮件发送(一)基本邮件发送
邮件发送(二)附件和图片
邮件解析(一) 基本内容
邮件解析(二) 附件和图片
总结以及我之前踩过的坑
邮件协议简介
常见的邮件协议有三种分别是SMTP、POP3和IMAP这三种。
SMTP
Simple Mail Transfer Protocol 即简单邮件传输协议,端口号默认是25,这个协议一般在发邮件的时候使用,即在服务器之间的传输,看名字也很容易理解传输协议主要就是负责传输的嘛,它帮助每台计算机在发送或中转的时候寻找目的地。要注意它的认证,它必须要在提供了账号和密码的前提下才能登陆SMTP服务器,去发送邮件。 而且别看他简单其实它事实上是E-Mail的传输标准。
POP3
邮局协议,一般用来收邮件,是因特网电子邮件的第一个离线标准。
IMAP
互联网信息访问协议,同上,可以理解为pop3的升级版,两者的具体区别请看下文。
POP3和IMAP的区别
共同点:
服务器可以暂存邮件
用户可以下载邮件
可以删除保存在邮件服务器上的邮件
可以对邮件进行操作
不同点:
IMAP的上述操作是实时同步到服务器的,而pop3则是在一次会话结束后才会提交到服务器
IMAP可以分文件夹而pop3不可以
IMAP支持预览,即你可以先看一下邮件的标题等再决定下不下,pop3是一次性传输过来的
IMAP可以选择性下载,pop3不能
邮件发送过程
如图所示,我们写好的邮件其实是经过邮件客户端,outlook,网易,腾讯等的再次处理以后通过smtp在网络中进行传播,而我们看到的邮件其实也是经过他们的再次解析从而呈现给我们的,JavaMail其实就是邮件客户端较底层的一个实现,之后要讲的就是在JavaMail的基础上构建出一个类似于上述客户端的简易邮件邮件客户端后端实现。