本文介绍如何利用JavaMail API创建邮件服务器的客户程序。邮件客户程序能够连接到邮件服务器,接收和发送邮件,还能管理邮件和邮件夹。本文首先介绍了JavaMail API的常用类,然后详细讲解了通过JavaMail API创建邮件客户程序的基本步骤和高级技巧,包括进行身份认证、创建和解析带附件的邮件,以及操纵邮件夹等。
关键词 SMTP,IMAP4,POP3,MIME,邮件标记,邮件附件
一、JavaMail API简介
邮件客户程序的主要任务是向邮件服务器发送邮件,以及接受来自邮件服务器的邮件。如果用Java语言从头编写邮件客户程序,就必须通过Socket与邮件服务器通信,发送和接受符合IMAP、POP3或SMTP协议的请求和响应信息。
为了简化邮件客户程序的开发,SUN公司制定了JavaMail API,它封装了按照各种邮件通信协议,如IMAP、POP3和SMTP,与邮件服务器通信的细节,为Java应用程序提供了收发电子邮件的公共接口,如图1所示。
图1 JavaMail API封装了与邮件服务器通信的细节
本文把使用了JavaMail API的程序简称为JavaMail应用。JavaMail API主要位于javax.mail包和javax.mail.internet中,图2为其中主要类的类框图。
1. javax.mail.Session类
Session类表示邮件会话,是JavaMail API的最高层入口类。Session对象从java.util.Properties对象中获取配置信息,如邮件发送服务器的主机名或IP地址、接受邮件的协议、发送邮件的协议、用户名、口令及整个应用程序中共享的其他信息。
2.javax.mail.Store类
Store类表示接收邮件服务器上的注册用户的存储空间,通过Store类的getFolder()方法,可以访问用户的特定邮件夹。
3. javax.mail.Folder类
Folder类代表邮件夹,邮件都放在邮件夹中,Folder类提供了管理邮件夹以及邮件的各种方法。
4. javax.mail.Message类
Message类代表电子邮件。Message类提供了读取和设置邮件内容的方法。邮件主要包含如下内容:地址信息,包括发件人地址、收件人地址列表、抄送地址列表和广播地址列表;邮件标题;邮件发送和接收日期;邮件正文(包括纯文本和附件)。
Message是个抽象类,常用的具体子类为Javax.mail.internet.MimeMessage。MimeMessage是符合MIME规范的电子邮件。
5. javax.mail.Address类
Address类代表邮件地址,和Message类一样,Address类也是个抽象类。常用的具体子类为javax.mail.internet.InternetAddress类。
6. javax.mail.Transport类
Transport类根据指定的邮件发送协议(通常是 SMTP),通过指定的邮件发送服务器来发送邮件。Transport类是抽象类,它的静态方法send(Message)负责发送邮件。