`
chenfengcn
  • 浏览: 118415 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

James+Javamail构建邮件服务(四)

阅读更多
5 Javamail邮件存储逻辑简介
5.1 Message存储结构示意图

  Message是邮件发送的最终对象,我们一般使用他的子类对象MimeMessage,其子类对象里包含有邮件的MessageID、Subject、Flag、From、Sender、Content等信息,Content是邮件的内容体,其一般是一个Multipart对象(或其子类对象MimeMultipart),所有的邮件内容都存在于Multipart中的。一个Multipart包含有一个或多个BodyPart对象(或其子类对象MimeBodyPart),BodyPart对象用于存储邮件的内容,可以是文本形式,也可以是附件形式。

6 常用Javamail API简介
  核心JavaMail API可以分为两部分,一部分由七个类组成:Session、Message、Address、Authenticator、Transport、Store及Folder,它们都来自Javamail API顶级包(但开发者需要使用的具体子类可能在javax.mail.internet包内)。可以用这些类完成大量常见的电子邮件任务,包括发送消息、检索消息、删除消息、认证、回复消息、转发消息、管理附件、处理基于HTML文件格式的消息以及搜索或过滤邮件列表,这类任务主要属于MTA范畴。下图描绘了Javamail邮件收发过程。



  下面给出这七个核心类的简单介绍,以使读者能对Javamail框架有一个大体了解:
6.1 javax.mail.Session
  Session类定义了一个基本邮件会话,它是Javamail API最高层入口类,所有其它类都必须经由Session对象才得以生效。Session对象管理配置选项和用于与邮件系统交互的用户认证信息,它使用java.util.Properties对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享的其它信息。
  Session类的构造器是私有的,它不能被继承,也不能使用new语句来创建实例,但它提供了两个表态方法getInstance和getDefaultInstance来获取Session实例,前者创建一个独立的会话,否则获取缺省的共享会话。
  API明细:/javamail-1.4.1/docs/javadocs/javax/mail/Session.html
6.2 javax.mail.Message
  获得Session对象后,可以开始继续创建要发送的邮件消息,这由Message类来完成,Message实现了Part接口,它表示一个邮件消息,包含一系列属性(attribute)和一个消息内容(content)。消息属性标识了消息地址信息,定义了消息内容的结构(包括内容类型);消息内容使用DataHandler对象包装实际数据。当邮件消息位于目录(folder)中时,系统还使用一个标志位集合来描述它的状态。
  Message是抽象类,实际使用时必需用一个子类代替以表示具体的邮件格式。比如说,Javamail API提供了MimeMessage(位于javax.mail.internet.MimeMessage包)类,该类扩展自Message,实现了RFC822和MIME标准。Message的子类通常通过字节流构建其实例,相应的,它们也可以生成字节流来传输自身。
  API明细:/javamail-1.4.1/docs/javadocs/javax/mail/Message.html
6.3 javax.mail.Address
  Address类表示电子邮件地址,它是一个抽象类。其子类(最经常使用的子类是javax.mail.internet.InternetAddress)提供具体实现,且通常可串行化。
在创建了Session和Message,并设置了消息内容后,可以用Address确定邮件消息的发送者和接收者地址。
  API明细:/javamail-1.4.1/docs/javadocs/javax/mail/Address.html
6.4 javax.mail.Authenticator
  Authenticator代表一个可以为网络连接获取认证信息的对象,它通常通过提示用户输入用户名和密码来收集认证信息,使连接可以访问受保护的资源。对于Javamail API来说,这些资源就是邮件服务器。Javamail Authenticator在javax.mail包中,它和java.net中同名的类Authenticator不同。
  要使用Authenticator,必须先创建一个它的子类实例,并且在会话对象创建时为会话注册该Authenticator对象。在需要认证的时候,就会通知Authenticator。程序可以弹出窗口,也可以从配置文件中(虽然没有加密是不安全的)读取用户名和密码,并使用它们作为构造函数参数创建一个PasswordAuthentication对象返回给调用程序。
  API明细:/javamail-1.4.1/docs/javadocs/javax/mail/Authenticator.html
6.5 javax.mail.Transport
  消息发送的最后步骤是使用Transport类。该类使用指定协议发送消息(通常是SMTP)。Transport是抽象类,它的工作方式与Session有些类似,可以通过静态方法或实例方法发送消息。Transport继承自Service类,而后者提供了很多通用方法,如命名传输、连接服务器、监听传输事件等等。
  API明细:/javamail-1.4.1/docs/javadocs/javax/mail/Transport.html
6.6 javax.mail.Store
  Store是一个抽象类,它模拟了消息存储器及其内部目录(Folder)访问协议,以存储和读取消息,其子类提供具体实现。
  Store定义的存储器包括一个分层的目录体系,消息存储在目录内,。客户程序可以通过获取一个实现了数据库访问协议的Store对象来访问消息存储器,绝大多数存储器要求用户在访问前提供认证信息,connect方法执行了该认证过程。
  Store store = session.getStore("pop3");//指定协议
  store.connect(host,usename,password);//
  API明细:/javamail-1.4.1/docs/javadocs/javax/mail/Store.html
6.7 javax.mail.Folder
  Folder是一个抽象类,用于分级组织邮件,其子类提供针对具体协议的实现。Folder代表的目录可以容纳消息或子目录,存储在目录内的消息被顺序计数(从1开始到消息总数),该顺序被称为“邮箱顺序”,通常基于邮件消息到达目录的顺序。邮件顺序的变动将改变消息的序列号,这种情况仅发生在客户程序调用Expunge方法擦除目录内设置了Flags.Flag.DELETED标志位的消息时。执行擦除操作后,目录内消息将重新编号。
  客户程序可以通过消息序列号或直接通过相应的Message对象应用目录中的消息,由于消息序列号在会话中很可能改变,因此应尽可能保存Message对象而非序列号来反复引用对象。
  连接到Store之后,接下来可以获取一个文件夹(Folder)。该文件夹必须先使用open()方法打开,然后才能读取里面的消息:
Folder folder = store.getDefaultFolder();
//或 : Folder folder = store.getFolder("inbox");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessage();
  open()方法指定了要打开的文件夹及打开方式(如Folder.READ_WRITE)。 inbox是POP3唯一可以使用的文件夹。如果使用IMAP,还可以用其它的文件夹。获得Message之后,就可以用getContent()获得其内容,或者用writeTo()将内容写入输出流。getContent()方法之能得到消息内容,而writeTo()的输出却包含消息头.读完邮件之后要关闭与Folder和Store的连接:
folder.close(aBoolean);
store.close();
  API明细:/javamail-1.4.1/docs/javadocs/javax/mail/Folder.html


7 常用Mailet API简介
Mailet主要包含两个包:org.apache.mailet和org.apache.mailet.dates
7.1 org.apache.mailet
  此包主要用于匹配器和Mailet的编写。自定义的Mailet类需要继承org.apache.mailet.GenericMailet,自定义的Matcher类需要继承org.apache.mailet.GenericMatcher或org.apache.mailet.GenericRecipientMatcher。例子详见第四章Mailet快速入门。
  API明细:/MailetSDK/javadocs/org/apache/mailet/package-summary.html
7.2 org.apache.mailet.dates
  此包主要用于邮件中的日期格式的转换。
  API明细:/MailetSDK/javadocs/org/apache/mailet/dates/package-summary.html
  • 大小: 23.3 KB
  • 大小: 19.2 KB
分享到:
评论

相关推荐

    James+Javamail构建邮件服务

    ### James+Javamail构建邮件服务 #### 关于James与Javamail ##### Apache James Apache James(Java Apache Mail Enterprise Server)是Apache组织的一个子项目,它完全基于Java技术开发,支持多种邮件相关协议,...

    James+Javamail构建邮件服务.doc

    James+Javamail构建邮件服务

    james+Javamail构建邮件服务

    james+Javamail构建邮件服务有例子,有详解

    james_javamail邮件服务学习

    JavaMail邮件服务是Java开发中用于发送和接收电子邮件的标准库,它基于SMTP(Simple Mail Transfer Protocol)和...同时,掌握这些知识点对于开发企业级应用、构建邮件通知系统或实现自动化邮件处理都是非常重要的。

    关于JavaMail和James邮件基础

    JavaMail和James是两个在Java环境中处理电子邮件的关键组件。JavaMail是一个开源库,它提供了用于发送、接收和操作电子邮件的标准API。而James(Apache James)则是一个完整的邮件服务器,它支持SMTP、POP3和IMAP...

    JAVAMail邮箱服务器搭建步骤详解

    Apache James是基于Java开发的一款开源邮件服务器,它集成了POP3、SMTP等常见的邮件协议,为企业和学习者提供了构建邮件服务器的便利。本文将详细介绍如何在Linux环境下搭建JavaMail邮箱服务器Apache James。 **...

    James邮件服务器

    此外,James可以与其他Apache项目(如Tomcat、Cassandra等)集成,构建更复杂的邮件解决方案。 总的来说,James邮件服务器是一个强大且灵活的开源邮件平台,适用于从小型企业到大型企业的各种规模的组织。其强大的...

    邮件服务器 Java写的源代码 SMTP+POP3

    1. 使用JavaMail发送邮件:通过`javax.mail.Session`、`javax.mail.Transport`和`javax.mail.internet.MimeMessage`等类,可以构建SMTP客户端,设置发件人、收件人、主题和正文,然后通过Transport.send()方法发送...

    JavaMail-1.5 API

    根据提供的文件描述部分,JavaMail API不仅仅能够执行一些简单的邮件传输任务,它还能被用来构建功能丰富的邮件客户端应用,类似于Microsoft Outlook。这意味着,JavaMail API可以用来实现从创建邮件、添加附件、...

    james_mail邮件系统(SSH)

    James_Mail 是一款基于Java开发的B/S模式的电子邮件系统,它提供了一种高效、安全且易于管理的方式来处理电子邮件服务。在这个系统中,用户可以通过Web浏览器进行邮件的收发、管理,极大地提高了工作效率。 ### 一...

    javamail 工程实例

    在结合James服务器使用时,JavaMail可以作为应用程序与邮件服务器交互的桥梁。 在JavaMail工程实例中,我们通常会涉及到以下几个关键知识点: 1. **JavaMail API**: JavaMail API 包含了一系列的接口和类,如`...

    纯Java的一个邮件服务器

    在Java开发领域,构建一个邮件服务器是一项重要的技术实践,这不仅可以用于学习JavaMail API的使用,也可以在实际项目中提供邮件发送和接收服务。本项目是基于纯Java实现的一个邮件服务器,名为James,版本为2.3.1。...

    基于Java的邮件服务器

    ### 基于Java的邮件服务器构建指南 #### 一、引言 本文将详细介绍如何构建一个基于Java的邮件服务器,特别适用于初学者以及资源有限的学习者。文章将涵盖整个搭建过程中的关键技术点,包括Apache James 3.0 的安装...

    基于Java的邮件服务器源程序.7z

    JavaMail包括`Session`(设置邮件服务器的配置信息)、`Message`(表示邮件对象)、`Address`(表示邮件地址)等核心组件,使开发者能够轻松地构建邮件客户端或服务器端应用。 5. MIME(Multipurpose Internet Mail...

    基于JAVA开发的邮件服务器

    在Java中,我们可以使用开源项目如James、JAMES Server或Apache MINA来构建这样的系统。 4. 安全性:邮件服务器需要确保通信的安全性,通常采用SSL/TLS进行加密,防止数据在传输过程中被截获。开发者需配置服务器...

    james JavaMailServer

    JavaMailServer,通常指的是Apache James项目,这是一个开源的邮件服务器,...通过理解和掌握其工作原理,你可以有效地利用James构建和管理自己的邮件系统。无论是个人使用还是企业部署,James都是一个值得信赖的选择。

    企业级JavaMail在Oracle系统中部署.pdf

    本文主要探讨了如何在Oracle环境下部署企业级JavaMail,包括选用James邮件服务器作为后台服务,以及集成开源的WebMail系统ClaroSync Touch。Oracle数据库作为数据存储的核心,提供了强大的数据管理和事务处理能力,...

Global site tag (gtag.js) - Google Analytics