JavaMail8 详解Message和MIME文档格式.docx

上传人:b****2 文档编号:1140900 上传时间:2023-04-30 格式:DOCX 页数:31 大小:26.14KB
下载 相关 举报
JavaMail8 详解Message和MIME文档格式.docx_第1页
第1页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第2页
第2页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第3页
第3页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第4页
第4页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第5页
第5页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第6页
第6页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第7页
第7页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第8页
第8页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第9页
第9页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第10页
第10页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第11页
第11页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第12页
第12页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第13页
第13页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第14页
第14页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第15页
第15页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第16页
第16页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第17页
第17页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第18页
第18页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第19页
第19页 / 共31页
JavaMail8 详解Message和MIME文档格式.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JavaMail8 详解Message和MIME文档格式.docx

《JavaMail8 详解Message和MIME文档格式.docx》由会员分享,可在线阅读,更多相关《JavaMail8 详解Message和MIME文档格式.docx(31页珍藏版)》请在冰点文库上搜索。

JavaMail8 详解Message和MIME文档格式.docx

头字段

  MIME头根据在邮件包中的位置,大体上分为MIME信息头和MIME段头。

(译者:

MIME信息头指整个邮件的头,而MIME段头只每个MIME段的头。

MIME信息头

  0.MIME-Version:

  这个头提供了所用MIME的版本号。

这个值习惯上为1.0。

  1.Content-Type:

它定义了数据的类型,以便数据能被适当的处理。

有效的类型有:

text,image,audio,video,applications,multipart和message。

注意任何一个二进制附件都应该被叫做application/octet-stream。

这个头的一些用例为:

image/jpg,application/mswork,multipart/mixed,这只是很少的一部分。

2.Content-ID:

  如果Content-Type是message/external-body或multipart/alternative时,这个头就有用了,它超出了本文的范围。

3.Content-MD5

4.Content-Language

5.Content-Description:

  这是一个可选的头。

它是任何信息段内容的自由文本描述。

描述必须使用us-ascii码。

  6.Content-Disposition:

一个试验性的头,它用于给客户程序/MUA提供提示,来决定是否在行内显示附件或作为单独的附件。

  7.Content-Transfer-Encoding:

这是所有头中最重要的一个,因为它说明了对数据所执行的编码方式,客户/MUA将用它对附件进行解码。

对于每个附件,可以使用7bit,8bit,binary,quoted-printable,base64和x-encodingname中的一种编码方式。

7bit

7bit这里指的是7位的ASCII编码方式。

编码是用在USASCII字符集上的常用的一种编码方式,也就是,保持它的原样。

8bit

8位元ASCII码。

binary

binary编码一般不用。

quotedprintable

因为欧洲的一些文字和ASCII字符集中的某些字符有部分相同。

如果邮件消息使用的是这些语言的话,于ASCII重叠的那些字符可以原样使用,ASCII字符集中不存在的字符采用形如“=?

?

”的方法编码。

这里“?

”需要用将字符编码后的16进制数字来指定。

采用quoted-printable编码的消息,长度不会变得太长,而且大部分都是ASCII中的字符,即使不通过解码也大致可以读懂消息的内容。

base64

base64是一种将二进制的01序列转化成ASCII字符的编码方法。

编码后的文本或者二进制消息,就可以运用SMTP等只支持ASCII字符的协议传送了。

Base64一般被认为会平均增加33%的报文长度,而且,经过编码的消息对于人类来说是不可读的。

x-encodingname

这个值是预留的扩展。

8.Date

发信日期

9.From

邮件作者

10.Sender

发信人

11.Reply-To

回邮地址

12.ToCCBCC

To收信人地址

  CC抄送:

另一个收信人地址

BCC密送:

收信人地址,但其它收信人看不到这个收信人的地址。

13.Subject

主题

14.Message-ID

MIME段头

  MIME段头(出现在实际的MIME附件部分的头),除了MIME-Version头,可以拥有以上任何头字段。

如果一个MIME头是信息块的一部分,它将作用于整个信息体。

例如,如果Content-Transfer-Encoding显示在信息(指整个信息)头中,它应用于整个信息体,但是如果它显示在一个MIME段里,它"

只能"

用于那个段中。

B、Message

javax.mail.Part(基础接口)

publicinterfacePart

Part是Message和BodyParts的基础接口。

Part一组由attribute和Content组成。

Attribute

JavaMail定义了一组标准属性,大多数现有的邮件服务器都支持。

这些属性都有set和get方法存取。

其他非标准属性用setHeader()和getHeader()存取。

Content

Part中的Content存在以下格式,DataHandler,inputstream,Javaobject。

DataHandler通过getDataHandler()获取,DataHandler对象允许客户发现在content上的有效方法,然后实例化合适的组件来执行这些操作。

inputstream通过getInputStream()获取,在取得inputstream之前,所有邮件格式编码

已经被解析。

Javaobject通过getContent()获取,返回对象可能是一个多Multipart对象。

javax.mail.internet.MimePart(继承于Part)

publicinterfaceMimePartextendsPart

添加对RFC822RFC2045MIME的支持。

javax.mail.Message(抽象基础类)

publicabstractclassMessageimplementsPart

javax.mail.internet.MimeMessage(继承于Message)

publicclassMimeMessageextendsMessageimplementsMimePart

B.1、javax.mail.Part

方法

booleanisMimeType(StringmimeType)

IsthisPartofthespecifiedMIMEtype?

ThismethodcomparesonlytheprimaryTypeandsubType.

判断Part是否是指定的MIME类型,此法方法只判断主类型和子类型。

内容参数将被忽略。

如:

但用isMimeType("

text/plain”);

比较"

text/plain;

charset=foobar"

.时,将返回true。

当子类型使用特殊字符”*”时,子类型的比较也将被忽略。

B.2、javax.mail.Message

Messages是一个抽象类,它实现接口Part,并定义了一些属性。

Message可以从Folder取得或由MimeMessage创建。

在Folder中的Message有一组flags来表明它在Folder中的状态。

属性

protectedbooleanexpunged

Trueifthismessagehasbeenexpunged.

True表示message已经被除去。

protectedFolderfolder

Thecontainingfolder,ifthismessageisobtainedfromafolder

若message由folder取得,则表示对应的folder。

protectedintmsgnum

Thenumberofthismessagewithinitsfolder,orzeroifthemessagewasnotretrievedfromafolder.

表示message在folder中的位置,0表示message不在folder中。

在文件中第一个邮件为1,依次递增。

protectedSessionsession

TheSessionobjectforthisMessage

操作msgnum属性的方法

对应邮件中的Form:

intgetMessageNumber()

voidsetMessageNumber(intmsgnum)

B.2、javax.mail.internet.MimeMessage

这个类描述了一个MIME类型的emailmessage,它实现了MimePart接口。

客户想要创建一个MIME类型的message,必须先创建一个空的MimeMessage对象,再填充属性和容器。

protectedbyte[]content

BytearraythatholdsthebytesofthisMessage'

scontent.

message的容器,存储邮件正文和附件。

protectedInputStreamcontentStream

IfthedataforthismessagewassuppliedbyanInputStreamthatimplementstheSharedInputStreaminterface,contentStreamisanothersuchstreamrepresentingthecontentofthismessage.

protectedDataHandlerdh

TheDataHandlerobjectrepresentingthisMessage'

protectedFlagsflags

TheFlagsforthismessage.

邮件的标记信息,如:

被看过或被删除等。

protectedInternetHeadersheaders

TheInternetHeadersobjectthatstorestheheaderofthismessage.

存储message的head部分。

protectedbooleanmodified

Aflagindicatingwhetherthemessagehasbeenmodified.

protectedbooleansaved

DoesthesaveChangesmethodneedtobecalledonthismessage?

1.Content-Type

对应邮件头中的Content-Type:

StringgetContentType()

2.Content-ID

对应邮件头中的Content-ID:

StringgetContentID()

Returnsthevalueofthe"

Content-ID"

headerfield.

voidsetContentID(Stringcid)

Setthe"

headerfieldofthisMessage.

操作Content-ID属性的方法

3.Content-MD5

对应邮件头中的Content-MD5:

StringgetContentMD5()

voidsetContentMD5(Stringmd5)

4.Content-Language

对应邮件头中的Content-Language:

String[]getContentLanguage()

voidsetContentLanguage(String[]languages)

5.Content-Description

对应邮件头中的Content-Description:

StringgetDescription()

Returnsthe"

Content-Description"

voidsetDescription(Stringdescription)

headerfieldforthisMessage.

voidsetDescription(Stringdescription,Stringcharset)

6.Content-Disposition

对应邮件头中的Content-Disposition:

StringgetDisposition()

voidsetDisposition(Stringdisposition)

7.Content-Transfer-Encoding

对应邮件头中的Content-Transfer-Encoding:

StringgetEncoding()

8.Date

对应邮件头中的Date:

voidsetSentDate(Dated)

SettheRFC822"

Date"

DategetSentDate()

ReturnsthevalueoftheRFC822"

field.

操作Date属性的方法

9.Form

对应邮件头中的Form:

voidaddFrom(Address[]addresses)

Addthespecifiedaddressestotheexisting"

From"

Address[]getFrom()

headerfields.

voidsetFrom()

headerfieldusingthevalueoftheInternetAddress.getLocalAddressmethod.

voidsetFrom(Addressaddress)

操作Form属性的方法

10.Sender

对应邮件中的Sender:

voidsetSender(Addressaddress)

Sender"

AddressgetSender()

操作Sender属性的方法

From和Sender

合法的信件头部必须包括"

From:

"

合法的信件头部也许会包括"

Sender:

如果信件即包括"

又包括"

,那么"

是发送者

如果信件包括"

但不包括"

里面的第一个地址是发送者

如果信件不包括"

,那么这封信肯定不可能是DomainKey签名过的(包括有"

而无"

的情况)

11.Reply-To

对应邮件中的Reply-To:

voidsetReplyTo(Addressaddress)

AddressgetReplyTo()

操作Reply-To属性的方法

对应邮件中的To:

CC:

BCC:

voidaddRecipients(Message.RecipientTypetype,Address[]addresses)

Addthegivenaddressestothespecifiedrecipienttype.

voidaddRecipients(Message.RecipientTypetype,Stringaddresses)

Address[]getAllRecipients()

Getalltherecipientaddressesforthemessage.

Address[]getRecipients(Message.RecipientTypetype)

Returnstherecepientsspecifiedbythetype.

操作收件人属性的方法

13.Subject

对应邮件头中的Subject:

voidsetSubject(Stringsubject)

Subject"

voidsetSubject(Stringsubject,Stringcharset)

StringgetSubject()

Returnsthevalueofthe"

操作Subject属性的方法

编码规则

ncoded-word="

=?

charset"

encoding"

encoded-text"

="

charset:

字符编码

encoding:

Q---QuotePrintable

B---BASE64

U---UUENCODE

例1:

=?

GB2312?

Q?

=C4=E3=BA=C3?

=

例2:

utf-7?

B?

WFgrWUNkU0swNE9kbjVPRVZiKy0z?

14.Message-ID

对应邮件头中的Message-ID:

SMTP服务器加的唯一的ID号。

可用这个号码作为邮件的编号。

StringgetMessageID()

Message-ID"

取得Message-ID属性的方法

15.操作Head的方法

String[]getHeader(Stringname)

Getalltheheadersforthisheader_name.

获取指定名称的所有header。

请注意,某些标题如果它们包含非US-ASCII字符则可能被编码为RFC2047,这些应该被解码。

StringgetHeader(Stringname,Stringdelimiter)

Getalltheheadersforthisheadername,returnedasasingleString,withheadersseparatedbythedelimiter.

返回一个由指定delimiter分隔的单一字符串。

若delimiter是null,则只有第一个header被返回。

EnumerationgetAllHeaderLines()

GetallheaderlinesasanEnumerationofStrings.

EnumerationgetAllHeaders()

ReturnalltheheadersfromthisMessageasanenumerationofHeaderobjects.

EnumerationgetMatchingHeaderLines(String[]names)

GetmatchingheaderlinesasanEnumerationofStrings.

EnumerationgetMatchingHeaders(String[]names)

ReturnmatchingheadersfromthisMessageasanEnumerationofHeaderobjects.

EnumerationgetNonMatchingHeaderLines(String[]names)

Getnon-matchingheaderlinesasanEnumerationofStrings.

EnumerationgetNonMatchingHeaders(String[]names)

Returnnon-matchingheadersfromthisMessageasanEnumerati

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2