`
01robert
  • 浏览: 71848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于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

分享到:
评论

相关推荐

    MIME-Base64-3.01.tar.gz

    MIME-Base64-3.01.tar.gz

    MIME-Base64.rar_MIME base64 _base64_mime

    Base64是MIME邮件中常用的编码方式之一。它的主要思想是将输入的字符串或数据编码成只含有{ A - Z , a - z , 0 - 9 , + , / }这64个可打印字符的串,故称为“Base64”。

    perl-MIME-Base64-3.15-396.el8.aarch64.rpm

    离线安装包,亲测可用

    perl-MIME-Base64-3.15-396.el8.x86_64.rpm

    离线安装包,亲测可用

    BASE64Decoder jar包

    `Base64`类提供了更稳定、更健壮且功能丰富的接口,包括对URL和MIME类型的编码支持。开发者应优先考虑使用`java.util.Base64`来替换`sun.misc`中的类。 在实际开发中,了解如何使用BASE64编码和解码是至关重要的,...

    乱码查看器乱码察看器顾名思义就是用来察看各种乱码的工具软件,目前支持MIME/BASE64

    乱码察看器顾名思义就是用来察看各种乱码的工具软件,目前支持MIME/BASE64, Quoted-Printable,HZ和UUCode四种形式的编码和解码,通过一些特殊的算法, 本程序还可以解开部分由于字节高位被屏蔽而形成的死乱码...

    base64包,decodeBase64包,encodeBase64String包

    在Java中,Base64编码和解码通常通过`java.util.Base64`类来实现。这个类提供了几个不同的子类和方法,用于处理各种Base64编码需求。 1. `java.util.Base64.Encoder`: 这个类用于对原始二进制数据进行Base64编码。...

    电子邮件MIME协议中的Base64编解码

    电子邮件MIME协议中的Base64编解码 Base64编解码是MIME协议中的一种常用的编码方式,用于将二进制数据转换为文本数据,以便在电子邮件中传输。下面是 Base64 编解码的知识点: 1. 什么是Base64编解码? Base64编...

    C/C++ Base64编解码开源库

    Base64是一种编码机制,常用于在网络上传输二进制数据,因为许多协议(如电子邮件的MIME)只允许ASCII字符。在C/C++中,处理Base64编解码通常需要自定义函数或者利用开源库。这个开源库提供了解决这个问题的方法。 ...

    BASE64Encoder.jar

    1. **邮件系统**:MIME标准规定,非ASCII字符的附件必须先进行Base64编码才能通过邮件系统传递。 2. **HTTP传输**:HTTP协议只支持ASCII字符,Base64编码可以确保二进制数据如图片或文件能在HTTP请求和响应中安全...

    base64加密jar包

    Base64是一种编码方式,常用于在网络上传输二进制数据,因为许多协议(如电子邮件的MIME)只允许ASCII字符。在这个“base64加密jar包”中,包含了一个名为`sun.misc.BASE64Decoder.jar`的文件,它是Java的一个内置...

    Thymeleaf显示base64字符串为图片.docx

    总结来说,要在Thymeleaf中显示Base64字符串为图片,关键在于后台将图片字节数组转成Base64字符串并添加MIME类型标识,然后通过ModelAndView传递给前端;在前端,使用Thymeleaf表达式将字符串插入到`&lt;img&gt;`标签的`...

    Laravel开发-base64-validation

    在Laravel框架中,开发过程中有时会遇到需要处理base64编码...以上就是关于在Laravel中处理base64编码文件验证的一些核心概念和实践方法。理解并掌握这些知识点,可以帮助你在实际项目中更有效地管理base64编码的数据。

    Base64文件图片编码解码双向转换解析预览工具

    总结来说,"Base64文件图片编码解码双向转换解析预览工具"是一款实用的应用,涵盖了Base64编码与解码的核心功能,特别适合于处理图片和文件的在线转换,而且其预览和暗色背景设计考虑了用户体验,使得处理透明图片...

    base64转化为图片保存到本地

    一旦获取到Base64字符串,就可以调用上面的`Base64ToImage`函数,传入Base64字符串和目标保存路径,实现将Base64编码的图片保存到本地。 在项目中,为了提高代码质量,可以对这段代码进行优化,例如添加错误处理、...

    base64_sun.misc.BASE64Decoder.zip

    因此,对于新的项目,推荐使用Java 8及以上版本提供的`java.util.Base64`类,这个类是公开的API,更稳定且功能更强大,提供了Base64编码和解码的各种选项,包括URL安全的变种和MIME格式。 总的来说,Base64编码和...

    JSP severlet 动态 base64 编码 图片 显示处理

    ### JSP Servlet 动态 Base64 编码图片...综上所述,Base64 编码在 Web 开发中有着广泛的应用,特别是在处理图片和其他二进制数据时非常有用。通过合理的编码与解码机制,可以有效地实现数据的网络传输和页面显示功能。

    base64V1.6_64位

    Base64编码在许多领域都有应用,如在Web开发中的JSON Web Tokens (JWT)、HTTPS证书、MIME格式的电子邮件,以及在存储或传输图像、音频和视频等二进制文件时。使用Base64V1.6.exe这样的工具,开发者和普通用户都可以...

    BASE64介绍.rar

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,...为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

    C语言实现Base64编解码(加密和解密).zip

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二...本资源使用C语言实现Base64加密和解密,可以实现数据的加密和文件的加密,不借助任何的第三方工具,便于移植。

Global site tag (gtag.js) - Google Analytics