JavaMail邮件简介及API概述第一篇

 更新时间:2016年12月22日 15:19:50   作者:汪先森  
这篇文章主要为大家详细介绍了JavaMail邮件简介及API概述第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

现如今,电子邮件在我们的生活当中扮演着越来越重要的角色,我们每个人几乎都会与其打交道(至少时不时我们都会接收到莫名其妙的垃圾邮件),在工作中,使用邮件进行交流沟通,可以使我们的工作有迹可循,也显的较为正式,这是由我们人为手工操作的,在生活中,在某网站注册了一个账户之后,该网站就会自动发送一封欢迎邮件并让我们确认是否注册,以防止恶意注册,当然,这个就不可能像我们工作中手工方式来进行操作了,Java的13种核心技术中的JavaMail为我们提供了API来对邮件进行相关的操作。

一、邮件服务器

要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。Internet上架设了大量的电子邮件服务器,例如,sina.com、qq.com、163.com等网站提供了面向公众免费的电子邮件服务器,许多公司也提供了面向内部员工的电子邮件服务器,这些电子邮件服务器彼此之间都可以发送和接收电子邮件。那邮件服务器的作用是什么呢,它可以帮我们把邮件发出去,也可以帮我们把邮件接收进来,还可以为我们提供取邮件的服务,这个类似于现实生活中的邮局,既可以接收邮件,也可以为我们取邮件提供服务,还可以帮我们发送邮件。下面的图片形象的说明了邮件服务器的功能

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

邮件服务器按通讯协议可以划分为两种类型:SMTP服务器和POP3/IMAP服务器,上图中的1、2、3的功能就是由SMTP服务器完成的,而4的功能则是由POP3服务器完成的。

二、电子邮箱

每个电子邮件服务器之上都可以开设多个电子邮箱,电子邮箱也称之为E-mail地址,它类似现实生活中的通讯地址,用户可通过这个地址接收别人发来的电子邮件和向别人发送电子邮件。电子邮箱的获得需要在邮件服务器上进行申请,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个帐户。邮件服务器把接收到的邮件保存到为某个帐户所分配的邮箱空间中(所以我们需要定期清理我们的邮件,否则超过了分配的空间则无法接收到新的邮件),用户通过其申请的用户名和密码登陆到邮件服务器上查收该地址已收到的电子邮件。

三、电子邮件的传输过程

电子邮件的传输过程可以用下图来表示

上图实线过程描述:

1、lisi@sina.com的邮件客户端与sina的SMTP服务器建立网络连接,并以lisi的用户名和密码进行登录后,使用SMTP协议把邮件发送给sina的SMTP服务器;

2、sina的SMTP服务器收到lisi@sina.com提交的地址邮件后,首先根据收件人的地址后缀判断接收者的邮件地址是否属于该SMTP服务器的管辖范围,如果是就直接把邮件存储到收件人的邮箱中,否则,sina的SMTP服务器向DNS服务器查询收件人的邮件地址后缀(sohu.com)所表示的域名的MX记录,从而得到sohu的SMTP服务器信息,然后与soho的SMTP服务器建立连接并采用SMTP协议把邮件发送给sohu的SMTP服务器;

3、soho的SMTP服务器收到sina的SMTP服务器发来的电子邮件后,也将根据收件人的地址判断该邮件是否属于该SMTP服务器的管辖范围,如果是的话就直接把邮件存储到收件人的邮箱中,否则,sohu的SMTP服务器可能继续转发这封邮件;

4、wangwu@sohu.com账号通过客户端与soho的POP3/IMAP服务器建立网络连接,并成功登录后,然后通过POP3/IMAP协议查看wangwu@sohu.com邮箱中是否有新邮件,如果有,则使用POP3或IMAP协议读取邮箱中的邮件。

虚线过程与实线过程类似,不再重复。

JavaMail API是Sun公司为方便Java开发人员在应用程序中实线邮件发送和接收功能而通过的一套标准开发包,它支持一些常用的邮件协议,如SMTP、POP3、IMAP和MIME等。要用这套API,当然需要先下载相关jar包,最新版本1.5.6,下载地址:https://java.net/projects/javamail/pages/Home

JavaMail API按其功能划分通常可分为如下三大类:
1、创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件;
2、发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议;
3、接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。

Session类:

Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。

以上4个类的关系如下所示:

以上内容大部分摘抄自《Java邮件开发详解》一书。下一篇JavaMail入门第二篇 创建邮件将介绍如何使用JavaMail提供的API创建邮件。

相关文章

  • java使用poi生成excel的步骤

    java使用poi生成excel的步骤

    2010以上格式使用XSSFWorkBook对象, 2003格式使用HSSFWorkBook对象, 其他对象操作基本一样,本文重点给大家介绍java使用poi生成excel的相关知识,感兴趣的朋友一起看看吧
    2022-04-04
  • 基于hashmap 的扩容和树形化全面分析

    基于hashmap 的扩容和树形化全面分析

    这篇文章主要介绍了hashmap 的扩容和树形化的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)

    详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)

    本篇文章主要介绍了详解SpringBoot 快速整合Mybatis(去XML化+注解进阶),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • JAVA 内部类详解及实例

    JAVA 内部类详解及实例

    这篇文章主要介绍了JAVA 内部类详解及实例的相关资料,需要的朋友可以参考下
    2016-11-11
  • Java中关于OAuth2.0的原理分析

    Java中关于OAuth2.0的原理分析

    这篇文章主要介绍了Java中关于OAuth2.0的原理分析,OAuth是一个关于授权的开放网络标准,允许用户授权第三 方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,需要的朋友可以参考下
    2023-09-09
  • Flowable历史查询实例分析

    Flowable历史查询实例分析

    这篇文章主要介绍了Flowable历史查询实例分析,历史是记录流程执行过程中发生的事情,并将其永久存储的组件,与运行时数据不同,历史数据在流程实例完成以后仍保存在数据库中,下面我们来深入了解
    2023-10-10
  • Spring注解驱动之@EventListener注解使用方式

    Spring注解驱动之@EventListener注解使用方式

    这篇文章主要介绍了Spring注解驱动之@EventListener注解使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Java 工具类总结目录(分享)

    Java 工具类总结目录(分享)

    下面小编就为大家带来一篇Java 工具类总结目录(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 浅析Java ClassName.this中类名.this关键字的理解

    浅析Java ClassName.this中类名.this关键字的理解

    Java ClassName.this中类名.this关键字 的理解大家都了解多少,有不太了解的朋友可以参考下本文一起学习学习
    2016-05-05
  • 一文带你搞懂Java中方法重写与方法重载的区别

    一文带你搞懂Java中方法重写与方法重载的区别

    这篇文章主要介绍了Java中方法重写与方法重载有哪些区别,文中有详细的代码示例,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-05-05

最新评论