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创建邮件。

相关文章

  • Spring Session的使用示例

    Spring Session的使用示例

    最近团队一个项目需要使用Session,之前没有在实际项目中使用过Spring-Session,这里记录一下使用的过程
    2021-06-06
  • Mybatis如何使用注解优化代码

    Mybatis如何使用注解优化代码

    这篇文章主要介绍了Mybatis如何使用注解优化代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • JAVA项目字典与缓存搭配使用方法解析

    JAVA项目字典与缓存搭配使用方法解析

    这篇文章主要介绍了JAVA项目字典与缓存搭配使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Fastjson 常用API介绍及下载地址(推荐)

    Fastjson 常用API介绍及下载地址(推荐)

    Fastjson是一个Java语言编写的高性能功能完善的JSON库。接下来通过本文给大家分享Fastjson 常用API介绍及下载地址,感兴趣的朋友一起看看吧
    2017-11-11
  • java基础详解之数据类型知识点总结

    java基础详解之数据类型知识点总结

    这篇文章主要介绍了java基础详解之数据类型知识点总结,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有很大的帮助,需要的朋友可以参考下
    2021-04-04
  • Java中的多种文件上传方式总结

    Java中的多种文件上传方式总结

    这篇文章主要介绍了Java中的多种文件上传方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java项目如何防止SQL注入(多种方案汇总)

    Java项目如何防止SQL注入(多种方案汇总)

    SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,这篇文章主要介绍了 Java项目防止SQL注入的四种方案,需要的朋友可以参考下
    2023-12-12
  • Java GUI图形界面开发实现小型计算器流程详解

    Java GUI图形界面开发实现小型计算器流程详解

    本文章向大家介绍Java GUI图形界面开发实现小型计算器,主要包括布局管理器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • 详细总结Java创建文件夹的方法及优缺点

    详细总结Java创建文件夹的方法及优缺点

    很多小伙伴都不知道如何用Java创建文件夹,今天给大家整理了这篇文章,文中有非常详细的方法介绍及方法的优缺点,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • 一种新的日期处理方式之JavaScript Temporal API

    一种新的日期处理方式之JavaScript Temporal API

    JavaScript Temporal API是一种为Web开发人员提供了一种新的处理日期和时间数据类型的方式。它的目的是使操作日期和时间更加简单和可靠,而且不用担心历史时区问题或全球化协调时间(UTC)之类的问题,感兴趣的同学可以参考阅读
    2023-05-05

最新评论