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、[email protected]的邮件客户端与sina的SMTP服务器建立网络连接,并以lisi的用户名和密码进行登录后,使用SMTP协议把邮件发送给sina的SMTP服务器;

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

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

4、[email protected]账号通过客户端与soho的POP3/IMAP服务器建立网络连接,并成功登录后,然后通过POP3/IMAP协议查看[email protected]邮箱中是否有新邮件,如果有,则使用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个类的关系如下所示:

下一篇JavaMail入门第二篇 创建邮件将介绍如何使用JavaMail提供的API创建邮件。

原文地址:https://www.cnblogs.com/niwotaxuexiba/p/9670264.html

时间: 2024-10-12 20:18:45

JavaMail入门第一篇 邮件简介及API概述的相关文章

ElasticSearch入门 第一篇:Windows下安装ElasticSearch

https://www.elastic.co/downloads/past-releases/elasticsearch-2-4-4 这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 ElasticSearch入门 第三篇:索引 ElasticSearch入门 第四篇:使用C#添加和更新文档 ElasticSearch入门 第五篇:使用C#查询文档

html/css入门第一篇

1.基本教程学习 大概三天业余时间看完下面两个教程. HTML文字教程 CSS文字教程 2.练习 看完教程后,做第一练习时,总结如下: 1)div居中 需要设置属性:margin-left:auto; margin-right:auto; 2) 给图片加链接后,图片有边框,消除边框方法:给图片设置属性 border-width:0px; 3)图片相连时,图片间有距离,消除图片间距离:给图片设置属性 display: block; html/css入门第一篇

Zookeeper 入门第一篇

转载原文地址: ZooKeeper学习总结 第一篇:ZooKeeper快速入门 ZooKeeper学习总结 第二篇:ZooKeeper深入探讨 ZooKeeper学习第一期---Zookeeper简单介绍 1. 概述 Zookeeper简单来说就是一个分布式协调技术的具体实现,所谓分布式协调技术就是在集群环境下,协调集群中多台机器并发访问控制,实现临界资源加锁和有序访问,防止造成"脏数据"的后果.所以Zookeeper最常见的应用就是:分布式锁.除此之外,基于Zookeerper提供的

PowerBI入门 第一篇:创建第一个PowerBI报表

PowerBI是微软新一代的交互式报表工具,把相关的静态数据转换为酷炫的可视化的,能够根据filter条件,对数据执行动态筛选,从不同的角度和粒度上分析数据.PowerBI主要由两部分组成:PowerBI Desktop和 PowerBI Service,前者供报表开发者使用,用于创建数据模型和报表UI,后者是管理报表和用户权限,以及查看报表(Dashboard)的网页平台(Web Portal).在开始PowerBI制作报表之前,请先下载 PowerBI Desktop桌面开发工具,并注册Po

JavaMail入门第二篇 创建邮件

JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.internet.MimeMessage类来创建Message类的实例对象,如果我们创建的是一个简单文本邮件,那么MimeMessage类就可以满足我们的需求了,但是如果需要创建一封包含内嵌资源或者是带附件的复杂邮件,则需要使用到JavaMail API中的MimeMessage.javax.mail.internet.MimeBodyPar

python学习之旅【第一篇】简介和入门

python简介: 一.什么是python pythonde 设计哲学是:“优雅”.“明确”.“简单” 二.python由来  1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python‘s Flying Circus)的爱好者. 三.Python能做什么 Web程序 Python经常被用于Web开发.比如,通过mod_ws

python入门第一篇:python语言简介

一.主流语言的介绍 二.什么是编程?为什么要编程? 编程是一个动词,编程==写代码 写代码为了什么? 为了让计算机帮我们做事情 三.编程语言的进化 高级语言的分类: 四.Python发展史 1989年,Guido开始写Python语言的编译器. 1991年,第一个Python编译器诞生.它是用C语言实现的,并能够调用C语言的库文件.从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统. Granddaddy of Python web f

NLP初试牛刀,NLTK入门第一篇

之前下载过一个PDF,书名是<用python进行自然语言处理>,挺有意思的,加上NLP和机器学习目前大热,想趁着暑假涉猎一下.于是开始了入门NLP之旅. 安装环境:Ubuntu14.04桌面版,python版本:2.7 第一步:安装nltk,首先要安装pip工具:sudo apt-get install python-pip,安装完成后用pip安装nltk:sudo pip install python-nltk. 第二步:下载nltk所有的包,在终端中进入python的交互模式, >&

【DirectX11】第一篇 DirectX11简介

本系列主要翻译和参考<Real-Time 3D Rendering with DirectX and HLSL>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是书中的代码和资源. 关于DirectX DirectX是一系列用来在微软提供的众多平台上开发游戏或图形应用的API接口,这些平台包括有Windows,Windows Phone,Xbox360以及最新的Xbox One.从上世纪末开始,DirectX已经发展并一直作为现代图形编程领域的领导者之一存在.DirectX3D作为D