MIME邮件组织结构

MIME邮件组织结构
一、MIME出现的原因
      由于SMTP只能表 述普 通文本,无法表达图片、声音等二进制数据;并且当SMTP接收邮件的内容时当接收到只有一个"."是单独行时就会认为邮件的内容已经结束。这样会导致SMTP服务器丢弃后面的内容,从而导致信息的丢失。

二、MIME如何解决问题
      要使用邮件格式发送这些非ASCII码的二进制数据时,必须先采用某种编码方式将它们"编码"成卡打印的ASCII字符后再作为邮件的内容;当邮件阅读程序在读取到这种经过编码处理的邮件后,再按照相应的解码方式解码出原始数据的二进制数据,这样就可以通过邮件传递多媒体数据了。

需要解决两个问题:
      1. 邮件阅读程序如何知道邮件中嵌入的原始二进制数据所采用的编码方式?
      2. 邮件阅读程序如何知道每个嵌入的图像或其他资源在整个邮件内容的起始位置?
      因此提出了MIME(多用途Internet邮件扩展协议),需要说明的是MIME不是对RFC822邮件格式的升级和替代而是它的一种扩展。即RFC822邮件格式定义了邮件头字段的详细信息和邮件内容的格式;而MIME定义如何在邮件体部分表达出丰富多样的数据内容。可这么理解:RFC822邮件与MIME邮件犹如Java中父类和子类之间的关系。


三、MIME定义的邮件结构
    一个采用了MIME的邮件称为MIME邮件,使用MIME-Version指定MIME协议的版本,使用Content-Type头字段指定邮件体的MIME类型使用Content-Transfer-Encoding头字段指定编码方法。
例如:MIME-Version:1.0
         Content-Type:multipart/mixed;boundry="------NextPart_000_0005_01C"
其中"multipart/mixed"表示邮件体中包含多段数据,每段数据之间使用boundry属性指定的字符文本作为分隔标识符

3.1 MIME邮件的组织结构
      一封邮件可以由多个不同人类型的MIME消息组合而成。一个MIME消息表示邮件中的一个基本MIME资源或若干基本MIME消息的组合体。每个MIME消息的数据格式包括消息头和消息体,分别称为MIME消息头、MIME消息体,它们之间使用空行分隔。
     MIME消息头中包含对资源的描述信息。
     MIME消息体中包含了资源的具体内容。


图1:MIME消息格式
     如图所示的例子(来自《JavaMail开发详解》)

                                                                             图2:包含组合消息、消息的MIME结构

3.2 MIME的编码方式
      由于传统的SMTP的编码方式是ASCII即只对一个字节进行编码,而通常ASCII的最高位不用因此只对后7位进行编码,但是当增加附件是的二进制数据的最高位是要用到的并且对于中文字符也不能有效的识别。因此需要使用新的编码方案。MIME中常用的编码方案有:BASE64、Quoted-printable,后来又有一种可以直接在邮件中传输二进制数据而不需要邮件编码称之为8Bit,而SMTP所使用的编码称为7Bit。MIME消息体中的编码方案有Content-Transfer-Encoding来指定可以是7Bit、8Bit、BASE64、Quoted-printable。

四、MIME实例解释各个内容
下面给出具体的实例来分析一下当在邮件中添加不同类型的附件之后,查看相应的源代码文件来MIME的层次组织架构。

下面图给出的MIME的源代码文件:






PS:
    邮件病毒就是通过将可执行程序通过BASE64编码放在MIME消息体中而将消息头中的类型有.exe类型变为图片或视频类型,若一些UA(User Agent)在解码邮件时不检查相应的消息类型或直接打开相应的附件就会导致病毒的执行,从而造成病毒的传播。
    邮件头和邮件体之间以一个空行进行分隔
    邮件头中有时候会包含cc、bcc两个字段。cc:用于指定邮件的抄送地址。bcc:用于指定邮件的暗送地址。
抄送地址和暗送地址的区别在于:邮件阅读程序通常都不显示暗送地址而会显示抄送地址。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值