[JavaMail]9 详解Multipart和BodyPart.docxVIP

  • 10
  • 0
  • 约7.48千字
  • 约 5页
  • 2017-07-09 发布于河南
  • 举报
[JavaMail]9 详解Multipart和BodyPart

简介 Message表示一个邮件,messgaes.getContent()返回一个Multipart对象。一个Multipart对象包含一个或多个BodyPart对象,来组成邮件的正文部分(包括附件)。 B、Multipart javax.mail.Multipart public abstract class Multipart Multipart是一个容器它转载多个body Part(正文、附件或内嵌资源)。Part的getContent()方法就返回一个Multipart对象。 javax.mail.internet.MimeMultipart public class MimeMultipart extends Multipart MimeMultipart是Multipart的实现类,默认类别是mixed。其他multipart子类型如:related和alternative可以通过new MimeMultipart(“alternative”);来实现。 B.0、Multipart的content-type 总体来说,MIME消息由消息头和消息体两大部分组成。现在我们关注的是MIME邮件,因此在以下的讨论中姑且称“消息”为“邮件”。 邮件头包含了发件人、收件人、主题、时间、MIME版本、邮件内容的类型等重要信息。每条信息称为一个域,由域名后加“: ”和信息内容构成,可以是一行,较长的也可以占用多行。域的首行必须“顶头”写,即左边不能有空白字符(空格和制表符);续行则必须以空白字符打头,且第一个空白字符不是信息本身固有的,解码时要过滤掉。 邮件体包含邮件的内容,它的类型由邮件头的“Content-Type”域指出。常见的简单类型有text/plain(纯文本)和text/html(超文本)。有时也会出现的multipart类型,是MIME邮件的精髓。邮件体被分为多个段,每个段又包含段头和段体两部分,这两部分之间也以空行分隔。常见的multipart类型有三种:multipart/mixed, multipart/related和multipart/alternative。 multipart/mixed:附件。 multipart/related:内嵌资源。 multipart/alternative:纯文本与超文本共存。 可以看出,如果在邮件中要添加附件,必须定义multipart/mixed段;如果存在内嵌资源,至少要定义multipart/related段;如果纯文本与超文本共存,至少要定义multipart/alternative段。什么是“至少”?举个例子说,如果只有纯文本与超文本正文,那么在邮件头中将类型扩大化,定义为multipart/related,甚至multipart/mixed,都是允许的。 multipart诸类型的共同特征是,在段头指定“boundary”参数字符串,段体内的每个子段以此串定界。所有的子段都以--=_”boundary行”开始,父段则以--=_”boundary行” --结束。段与段之间也以空行分隔。 前文,在邮件体是multipart类型的情况下,邮件体的开始部分(第一个--=_”boundary行”之前)可以有一些附加的文本行,相当于注释,解码时应忽略。段间也可以有一些附加的文本行,不会显示出来,如果有兴趣,不妨验证一下。 B.1、javax.mail.Multipart 属性 protected String contentType This field specifies the content-type of this multipart object. 返回Multipart的content-type类型。类型包括alternative, mixed, related, parallel, signed等。 protected Part parent The Part containing this Multipart, if known. 父Part,一般是message。 protected Vector parts Vector of BodyPart objects. 方法 1.操作BodyPart void addBodyPart(BodyPart part) Adds a Part to the multipart. void addBodyPart(BodyPart part, int index) Adds a BodyPart at position index. BodyPart getBodyPart(int index) Get the specified Part. boolean removeBodyPart(Bo

文档评论(0)

1亿VIP精品文档

相关文档