JavaMail开发教程01开山篇

其实想写JavaMail这一系列的博客已经有一个月之久了,缘起是某次乱逛传智播客官网浏览到相关的视频教程,想起大学时代学过的计算机网络提到邮件相关的协议,但遗憾的是到目前为止还没有接触计算机网络编程,尤其搞Java EE开发之后,底层的网络细节都已经封装好了,并没有接触多少底层的细节,一直以来以为只要与网络协议相关的编程都是C/C++家族特有的功能。看了张孝祥老师的视频之后,发现C/C++能干的事,Java也能干出来,并且一下子就对邮件开发有点兴趣起来。当然看了视频之后还只是懵懵懂懂不能理解透彻,毕竟很有很多细节值得下去咀嚼。于是又买了张孝祥老师的《Java邮件开发详解》来,这才对JavaMail理解明朗起来。

在这感谢张孝祥老师,老师虽然已经辞世,但其技术书籍却普惠了后来人。本系列教程知识点提炼自张孝祥老师的JavaMail视频教程和《Java邮件开发详解》书籍,以及来自JavaMail官方的API文档,是对上诉系列文档的归纳、升华和总结。本系列博客适合刚学完了Java SE的初学者,和正在学习计算机网络编程的在校生,以及已经有工作经验的Java EE开发提供JavaMail方面的参考资料。

本系列博客教程内容大致分为:邮件协议相关协议讲解,JavaMail邮件的发送,电子邮件的组织结构,使用JavaMail生成复杂结构的电子邮件,邮件的接收和解析等。并最总能够向好友发送一封复杂邮件,这封邮件应该包含附件、超链接、HTML格式文本以及内嵌图片,并且邮件的抄送人,密送人也能够正常接收到邮件的内容。

基本概念

邮件服务器
电子邮件的系统抽象简单概括如下图:
这里写图片描述
从图中可以看出,电子邮件服务器主要有一下功能:

  1. 接收用户投递的邮件;
  2. 将用户投递进来的邮件转发给目标邮件服务器;
  3. 接收其他邮件服务器转发来的邮件,并把邮件存储到其他管理的用户邮箱中;
  4. 为前来读取邮件的用户提供读取服务。

SMTP协议
如果按照相见的传输方向分类,那么邮件协议大概分为两种:SMTP协议和POP3/IMAP协议。前者主要是推送邮件,后者主要是把邮件从服务器上拉到本地来。

SMTP的全称是Simple Mail Transfer Protocol,简单邮件传输协议,它定义了服务器与服务器之间,已经服务器与客户端之间的通信规则,常用端口号是25。

POP3协议
全程是Post Office Protocol,有据协议,它定义了客户端与服务器通信的规则,常用端口号110。

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

用户代理
用户代理俗称就是邮件客户端,或者可以称为邮件阅读器。其作用是方便用户阅读、回复、转发、保存和撰写邮件报文。目前流行的邮件客户端有FoxMail,Outlook,Thunderbird等,由于博主操作系统用的是ubuntu,所以实验环境是建立在Thunderbird上的。

DNS
DNS与上诉协议在TCP/IP协议族中处于位置:应用层。DNS是域名解析系统,它的作用是将域名映射成ip地址,将域名转换为IP地址这一过程我们称之为域名解析,除此之外DNS还有域名反向解析的作用。

DNS的解析过程有点复杂,这里不打算详解介绍,DNS为什么要与邮件开发想关联起来?那是因为SMTP协议既与客户端通信,又与服务器通信,服务器判断发送过来的邮件是通过邮件客户端(用户代理)过来的还是某台SMTP服务器发送过来的,是通过判断其计算机名称是否是注册在DNS系统中的计算机名称。

如果你看到这里已经感觉云里雾里,或是嫌弃介绍的概念太过简单粗糙。别着急,下面的篇章将从实际动手为出发点,带你走近JavaMail开发的殿堂。

猜你喜欢

转载自blog.csdn.net/zhang5476499/article/details/78598555
今日推荐