关于MIME 和Base64

MIME: Multipurpose Internet Email Extension 多功能Internet 邮件扩充服务

MIME原来是同SMTP协议来起应用来,后来广泛应用于http等中。

其显著的特点是所有的内容用US-ASCII来显示,一个完整的MIME消息如下:

MIME-version: 1.0
Content-type: multipart/mixed; boundary="frontier"

This is a message with multiple parts in MIME format.
--frontier
Content-type: text/plain

This is the body of the message.
--frontier
Content-type: text/plain

another message
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--


它包含一个头和内容体,内容体又可包含多个message, 每个消息有个消息头和消息体。

对于多媒体文件附加上消息加,一般可设置头Content-transfer-encoding为base64编码方式,将二进制流转为字条串方式。

------------------------------------------------------
生成一个MIME文档的例子:
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

public class MyTest {
    public static void main(String[] args){
        try{
            MimeMultipart mult=new MimeMultipart();
            MimeBodyPart part1=new MimeBodyPart();
            MimeBodyPart part3=new MimeBodyPart();
            part1.setText("abc");
            MimeBodyPart part2=new MimeBodyPart();
            part2.setText("cdef<aaaa>");
            mult.addBodyPart(part1);
            mult.addBodyPart(part2);
            //System.out.println(mult.toString());

            FileDataSource   source=new   FileDataSource("d:\\temp\\log.jpg");  
            part3.setDataHandler(new   DataHandler(source));  
            part3.setFileName(source.getName());               
            part3.setHeader("Content-Transfer-Encoding", "base64");
            
            mult.addBodyPart(part3);
            mult.writeTo(System.out);
            System.out.println("------part3 is "+part3.getEncoding());
            
            System.out.println("-----encode source is : " + MimeUtility.getEncoding(source));
            
        }catch (Exception e){
            e.printStackTrace();
        }
            
    }
}</aaaa>


-------------------------------------
Base64指用 a-z、A-Z、0-9 62个基础字符及 "+", "-","/","=" 中的几个 对进制流进行编码,
编码方法是将原来的三个字节变成6*4的方式四个字节, 6位二进制就是64个字符。

-----------------------------------

参考: http://en.wikipedia.org/wiki/MIME

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值