11 详解附件和DataHandler、DataSource

上传人:桔**** 文档编号:564807609 上传时间:2022-09-07 格式:DOCX 页数:2 大小:11.04KB
返回 下载 相关 举报
11 详解附件和DataHandler、DataSource_第1页
第1页 / 共2页
11 详解附件和DataHandler、DataSource_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《11 详解附件和DataHandler、DataSource》由会员分享,可在线阅读,更多相关《11 详解附件和DataHandler、DataSource(2页珍藏版)》请在金锄头文库上搜索。

1、A、邮件中的附件 附件是邮件消息的相关资源,如通常不包含在消息正文里文本文件、电子表格或图像等。可 以用JavaMail API将资源attach (附加)到您的消息上,就可以在收到消息时得到。附件的发送: 发送附件非常像转发消息。您建立各部分以组成完整消息。完成第一部件,即消息正文后, 您添加其它部件,其中每个 DataHandler 都代表附件,而不是转发消息情况下的共享处理 程序。如果从文件中读附件,附件的数据源是FileDataSource。而如果从URL中读时,附 件的数据源是URLDataSource。一旦存在DataSource,只要先把它传递给DataHandler构造 器,最

2、后再用setDataHandler()把它附加到BodyPart。假定您要保留附件的原始文件名, 最终要做的是用 BodyPart 的 setFileName() 方法设置与附件相关的文件名。附件的获取:从消息中获取附件比发送它们棘手些,因为 MIME 没有简单的关于附件的概念。当消息包 含附件时,消息的内容是个Multipart对象。接着,您需要处理每个Part,获取主要内容和 附件。标有从 part.getDisposition()获得的 Part.ATTACHMENT 配置(disposition)的部件(Part) 无疑就是附件。但是,没有配置(以及一个非文本 MIME 类型)和带 P

3、art.INLINE 配置的 部件也可能是附件。当配置要么是Part.ATTACHMENT,要么是Part.INLINE时,这个消息部 件的内容就能被保存。只要用 getFileName() 和 getInputStream() 就能分别得到原始文件名 和输入流。B、相关的类B.1、 javax.activation.DataHandler public class DataHandler implements TransferableDataHandler 类为在多种不同源和格式下可用的数据提供一致的接口。 它使用 DataContentHandler 管理简单流到字符串的转换以及相关操作。

4、它提供对能够操作数据的命 令的访问。使用 CommandMap 可以找到这些命令。构造函数DataHandler(DataSource ds)创建引用指定 DataSource 的 DataHandler 实例。DataHandler(Object obj, String mimeType) 创建表示此 MIME 类型对象的 DataHandler 实例。DataHandler(URL url)创建引用 URL 的 DataHandler 实例。B.2、 javax.activation.DataSourcepublic interface DataSourceDataSource 接口为 J

5、avaBeans Activation Framework 提供任意数据集合的抽象。它提供该数 据的类型,并在适当的时候以 InputStream 和 OutputStream 的形式提供对该数据的访问。B.3、 javax.activation.FileDataSourcepublic class FileDataSource implements DataSourceFileDataSource 类实现一个封装文件的简单 DataSource 对象。它通过 FileTypeMap 对象提 供数据分类服务。FileDataSource 类将文件的数据分类委托给一个从 FileTypeMap

6、类子类化的对象。 setFileTypeMap方法可用于为FileDataSource实例显示地设置FileTypeMap。如果没有设置 任何 FileTypeMap,贝IFileDataSource 将调用 FileTypeMap 的 getDefaultFileTypeMap 方法 获取系统的默认 FileTypeMap。构造函数FileDataSource(File file)根据 File 对象创建 FileDataSource。FileDataSource(String name)根据指定的路径名创建 FileDataSource。B.4、javax.activation.URLDa

7、taSourcepublic class URLDataSource implements DataSourceURLDataSource 类 提 供 一 个对象, 此 对 象 将 URL 对象包装 在 DataSource 接口 中 。 URLDataSource 简化了 JavaBeans Activation Framework 中 URL 描述的数据处理方法,因为 此类可用于创建新的DataHandler。注:当用URL构造DataHandler对象时,DataHandler对 象在内部创建一个 URLDataSource。范例1:发送一个有正文和附件的邮件,这Content-Type

8、: multipart/mixed;BodyPart bp1= new MimeBodyPart(); bp1.setText(mailMessage.getBody();BodyPart bodyPart= new MimeBodyPart();DataSource dataSource= new FileDataSource( C:xxx.xls );DataHandler dataHandler= new DataHandler(dataSource); bodyPart.setDataHandler(dataHandler);bodyPart.setFileName( xxx.xls)

9、;Multipart multipart= new MimeMultipart();multipart.addBodyPart(bp1); multipart.addBodyPart(bodyPart);范例2:发送一个有html正文和内嵌资源的邮件,这Content-Type: multipart/related;String htmlText = Hello+ ;BodyPart bp1 = new MimeBodyPart();bp1.setContent(htmlText, text/html );BodyPart bodyPart = new MimeBodyPart();DataS

10、ource dataSource = new FileDataSource( C:1.jpg );DataHandler dataHandler = new DataHandler(dataSource); bodyPart.setDataHandler(dataHandler);bodyPart.setHeader( Content-ID ,memememe);/内嵌资源和html正文中cid:memememe关联MimeMultipart multipart = new MimeMultipart( related ); /创建一个 related 类型 的 MimeMultipart multipart.addBodyPart(bp1);multipart.addBodyPart(bodyPart);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号