技术开发 频道

JavaMail API细节详细解析大全系列之二

【IT168 技术文档】

 三、安装
 
1.安装JavaMail
 
  为了使用JavaMail API,需要从http://java.sun.com/products/javamail/downloads/index.html下载文件名格式为javamail-[version].zip的文件(这个文件中包括了JavaMail实现),并将其中的mail.jar文件添加到CLASSPATH中。这个实现提供了对SMTP、IMAP4、POP3的支持。
 
  注意:在安装JavaMail实现之后,我们将在demo目录中发现许多有趣的简单实例程序。在安装了JavaMail之后,我们还需要安装JavaBeans Activation Framework,因为这个框架是JavaMail API所需要的。如果我们使用J2EE的话,那么我们并无需单独下载JavaMail,因为它存在于J2EE.jar中,只需将J2EE.jar加入到CLASSPATH即可。
 
2.安装JavaBeans Activation Framework
 
  从http://java.sun.com/products/javabeans/glasgow/jaf.html下载JavaBeans Activation Framework,并将其添加到CLASSPATH中。此框架增加了对任何数据块的分类、以及对它们的处理的特性。这些特性是JavaMail API需要的。虽然听起来这些特性非常模糊,但是它对于我们的JavaMail API来说只是提供了基本的MIME类型支持。到此为止,我们应当把mail.jar和activation.jar都添加到了CLASSPATH中。当然如果从方便的角度讲,直接把这两个Jar文件复制到JRE目录的lib/ext目录中也可以。
 
四、初次认识JavaMail API
 
1.了解我们的JavaMail环境
 
A.纵览JavaMail核心类结构
 
  打开JavaMail.jar文件,我们将发现在javax.mail的包下面存在着一些核心类:Session、Message、Address、Authenticator、Transport、Store、Folder。而且在javax.mail.internet包中还有一些常用的子类。
 
B.Session
 
  Session类定义了基本的邮件会话。就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。
 
  Session类的构造方法是私有的,所以我们可以使用Session类提供的getDefaultInstance()这个静态工厂方法获得一个默认的Session对象:
 
Properties props = new Properties();
// fill props with any
informationSession session =
Session.getDefaultInstance(props, null);
 
  或者使用getInstance()这个静态工厂方法获得自定义的Session:
 
Properties props = new Properties();
// fill props with any
informationSession session =
Session.getInstance(props, null);
 
  从上面的两个例子中不难发现,getDefaultInstance()和getInstance()方法的第二个参数都是null,这是因为在上面的例子中并没有使用到邮件授权,下文中将对授权进行详细介绍。
 
  从很多的实例看,在对mail server进行访问的过程中使用共享的Session是足够的,即使是工作在多个用户邮箱的模式下也不例外。
 
C.Message
 
  当我们建立了Session对象后,便可以被发送的构造信息体了。在这里SUN提供了Message类型来帮助开发者完成这项工作。由于Message是一个抽象类,大多数情况下,我们使用javax.mail.internet.MimeMessage这个子类,该类是使用MIME类型、MIME信息头的邮箱信息。信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。
 
  为了建立一个MimeMessage对象,我们必须将Session对象作为MimeMessage构造方法的参数传入:
 
MimeMessage message = new MimeMessage(session);
 
注意:对于MimeMessage类来讲存在着多种构造方法,比如使用输入流作为参数的构造方法。
 
  在建立了MimeMessage对象后,我们需要设置它的各个part,对于MimeMessage类来说,这些part就是MimePart接口。最基本的设置信息内容的方法就是通过表示信息内容和米么类型的参数调用setContent()方法:
 
message.setContent("Hello", "text/plain");
 
  然而,如果我们所使用的MimeMessage中信息内容是文本的话,我们便可以直接使用setText()方法来方便的设置文本内容。
 
message.setText("Hello");
 
  前面所讲的两种方法,对于文本信息,后者更为合适。而对于其它的一些信息类型,比如HTML信息,则要使用前者。
 
别忘记了,使用setSubject()方法对邮件设置邮件主题:
 
message.setSubject("First");
 
D.Address
 
  到这里,我们已经建立了Session和Message,下面将介绍如何使用邮件地址类:Address。像Message一样,Address类也是一个抽象类,所以我们将使用javax.mail.internet.InternetAddress这个子类。
 
  通过传入代表邮件地址的字符串,我们可以建立一个邮件地址类:
 
Address address =
new InternetAddress
("president@whitehouse.gov");
 
  如果要在邮件地址后面增加名字的话,可以通过传递两个参数:代表邮件地址和名字的字符串来建立一个具有邮件地址和名字的邮件地址类:
 
Address address =
new InternetAddress
("president@whitehouse.gov",
"George Bush");
 
  本文在这里所讲的邮件地址类是为了设置邮件信息的发信人和收信人而准备的,在建立了邮件地址类后,我们通过message的setFrom()和setReplyTo()两种方法设置邮件的发信人:
 
message.setFrom(address);

message.setReplyTo(address);

0
相关文章