2024年6月15日发(作者:)
A、邮件中的附件
附件是邮件消息的相关资源,如通常不包含在消息正文里文本文件、电子表格或图像等。可
以用 JavaMail API 将资源 attach(附加) 到您的消息上,就可以在收到消息时得到。
附件的发送:
发送附件非常像转发消息。您建立各部分以组成完整消息。完成第一部件,即消息正文后,
您添加其它部件,其中每个 DataHandler 都代表附件,而不是转发消息情况下的共享处理
程序。如果从文件中读附件,附件的数据源是 FileDataSource。而如果从 URL 中读时,附
件的数据源是 URLDataSource。一旦存在 DataSource,只要先把它传递给 DataHandler 构造
器,最后再用 setDataHandler() 把它附加到 BodyPart。假定您要保留附件的原始文件名,
最终要做的是用 BodyPart 的 setFileName() 方法设置与附件相关的文件名。
附件的获取:
从消息中获取附件比发送它们棘手些,因为 MIME 没有简单的关于附件的概念。当消息包
含附件时,消息的内容是个 Multipart 对象。接着,您需要处理每个 Part,获取主要内容和
附件。标有从 position() 获得的 MENT 配置(disposition)的部件(Part)
无疑就是附件。但是,没有配置(以及一个非文本 MIME 类型)和带 配置的
部件也可能是附件。当配置要么是 MENT,要么是 时,这个消息部
件的内容就能被保存。只要用 getFileName() 和 getInputStream() 就能分别得到原始文件名
和输入流。
B、相关的类
B.1、ndler
public class DataHandler implements Transferable
DataHandler 类为在多种不同源和格式下可用的数据提供一致的接口。它使用
DataContentHandler 管理简单流到字符串的转换以及相关操作。它提供对能够操作数据的命
令的访问。使用 CommandMap 可以找到这些命令。
构造函数
DataHandler(DataSource ds)
创建引用指定 DataSource 的 DataHandler 实例。
DataHandler(Object obj, String mimeType)
创建表示此 MIME 类型对象的 DataHandler 实例。
DataHandler(URL url)
创建引用 URL 的 DataHandler 实例。
B.2、urce
public interface DataSource
DataSource 接口为 JavaBeans Activation Framework 提供任意数据集合的抽象。它提供该数
据的类型,并在适当的时候以 InputStream 和 OutputStream 的形式提供对该数据的访问。
B.3、taSource
public class FileDataSource implements DataSource
FileDataSource 类实现一个封装文件的简单 DataSource 对象。它通过 FileTypeMap 对象提
供数据分类服务。
FileDataSource 类将文件的数据分类委托给一个从 FileTypeMap 类子类化的对象。
setFileTypeMap 方法可用于为 FileDataSource 实例显示地设置 FileTypeMap。如果没有设置
任何 FileTypeMap,则 FileDataSource 将调用 FileTypeMap 的 getDefaultFileTypeMap 方法
获取系统的默认 FileTypeMap。
构造函数
FileDataSource(File file)
根据 File 对象创建 FileDataSource。
FileDataSource(String name)
根据指定的路径名创建 FileDataSource。
B.4、aSource
public class URLDataSource implements DataSource
URLDataSource 类提供一个对象,此对象将 URL 对象包装在 DataSource 接口中。
URLDataSource 简化了 JavaBeans Activation Framework 中 URL 描述的数据处理方法,因为
此类可用于创建新的 DataHandler。注:当用 URL 构造 DataHandler 对象时,DataHandler 对
象在内部创建一个 URLDataSource。
范例1:
发送一个有正文和附件的邮件,这时
Content-Type: multipart/mixed;
BodyPart bp1=new MimeBodyPart();
t(y());
BodyPart bodyPart=new MimeBodyPart();
DataSource dataSource=new FileDataSource("C:");
DataHandler dataHandler=new DataHandler(dataSource);
aHandler(dataHandler);
eName("");
Multipart multipart=new MimeMultipart();
yPart(bp1);
yPart(bodyPart);
范例2:
发送一个有
html
正文和内嵌资源的邮件,这时
Content-Type: multipart/related;
String htmlText = "
Hello
"+ "";
BodyPart bp1 = new MimeBodyPart();
tent(htmlText, "text/html");
BodyPart bodyPart = new MimeBodyPart();
DataSource dataSource = new FileDataSource("C:");
DataHandler dataHandler = new DataHandler(dataSource);
aHandler(dataHandler);
der("Content-ID","memememe");
//内嵌资源和html正文中cid:memememe关联


发布评论