首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

JavaEE5学习札记04-JavaMail使用总结-1

2012-12-22 
JavaEE5学习笔记04-JavaMail使用总结---11.????? JavaMail简介其实利用JavaMail API发送邮件本身没什么,在

JavaEE5学习笔记04-JavaMail使用总结---1

1.????? JavaMail简介

其实利用JavaMail API发送邮件本身没什么,在Java Web系统中也可以将自己封装好的JavaMail的UtilBean作为一个模块来用。官方的解释是这样的

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。

一句话,如果您有时间,您愿意,完全可以利用JavaMail API开发一个山寨版的Foxmail。因为它确实为您屏蔽了底层的通讯协议、发送细节等等。

2.????? 常用接口

JavaMail常用的接口有如下几个

1.????? javax.mail.Session:代表一次邮件会话。

下面就是创建了会话

?????? Session session = Session.getDefaultInstance(properties,

????????????? new Authenticator() {//构造服务器认证对象

?

????????????????? @Override

????????????????? protected PasswordAuthentication getPasswordAuthentication() {

???????????????????? return new PasswordAuthentication(userName, password);

????????????????? }

????????????? });

当然,如果使用JBoss服务的时候,则可以采用注入的方式直接获取Session。

2.????? javax.mail.Transport

用于发送邮件的抽象类,它有一个SMTPTransport具体类

?????? // 真正发送邮件

?????? Transport.send(msg);

3.????? javax.mail.Store

此类用于邮件的读取、写、监视、查找等等操作

如下操作

?????????? // 使用pop3协议接收邮件

?????????? URLName url = new URLName("pop3", getPop3Host(), getPop3Port(),

?????????? ?????? null, getAccount(), getPassword());

?

?????????? Store store = session.getStore(url);

?

4.????? javax.mail.Folder

用于组织邮件,代表邮件系统的一个文件夹。

获取如下:

?????? Folder inbox = getStore().getFolder("INBOX");

?

?????? inbox.open(Folder.READ_WRITE);

?

5.????? javax.mail.MimeMessage

实际的邮件对象

它下属性

bte[] content:邮件内容的字节数组

InternetHeaders header:邮件的文件头对象

它还有如下方法

Void addFrom():设置发件人

Void addHeader():设置邮件头信息

Void addRecipients():增加收件地址

Address[] getFrom():返回邮件发件人地址列表

Void setContent():设置Email的内容

如下代码

MimeMessage msg = new MimeMessage(session);

?

6.????? javax.mail.Address

制定人发件人、收件人地址,它也是一个抽象类,他有一个InternetAddress子类。

如下

?????? // 设置收件人

?????? // 收件人可以是多个,所以是数组

?????? InternetAddress[] internetAddressTo = { new InternetAddress(to),

????????????? new InternetAddress("stail111@163.com") };

?

7.????? javax.mail.Multipart

用于保存电子邮件的内容的容器,它定义了添加、删除、获得电子邮件内容的方法。他也是抽象类,有一个子类叫做MimeMultipart。

代码如下:

?????? Multipart mp = new MimeMultipart();

?

?????? // 构造正文

?????? MimeBodyPart mbpContent = new MimeBodyPart();

?????? mbpContent.setText(content);

?

?????? mp.addBodyPart(mbpContent);

?

8.????? javax.mail.BodyPart

以上代码示例出现了MimeBodyPart,他是BodyPart的子类,代表邮件内容的一部分,既可以代表邮件正文、也可以代表邮件的附件。

上面是描绘了一个普通的字符串。

9.????? javax.activation.DataHandler

该类允许邮件信息包含非文本的BodyPart对象,如下代码

?????????? MimeBodyPart filembpContent = new MimeBodyPart();

?????????? FileDataSource fds = new FileDataSource(files);

??? ?????? filembpContent.setDataHandler(new DataHandler(fds));

?????????? filembpContent.setFileName(fds.getName());

?????????? mp.addBodyPart(filembpContent);

?

10.? javax.activation.FileDataSource

一般是附件文件对象,可以用于给邮件增加附件。上面的代码中也就是增加了一个文件附件

11.? javax.activation.URLaSource

代表一个url的远程资源

热点排行