`

javamail_接收邮件_邮件附件中文名乱码问题草解

 
阅读更多

 Android的邮件编码网上的资料很少,但大体与JavaMail相似,在参考了网上关于JavaMail的资料,经过多次尝试,最终解决附件中文名乱码问题。
 邮件附件名的编码与邮件名的编码可以如出一辙。因为多功能Internet邮件扩充服务协议,即MIME(Multipurpose Internet Mail Extensions)对附件名的规定是US-ASCII(应该也是ASCII),因此该乱码bug的出现与Java和Android无关,是MIME的不规范。
  邮件的标题,用了一种更简短的格式来标注“字符编码”和“传输编码”。比如,标题内容为 "中",则在邮件源代码中表示为: " =?GB2312?B?1tA=?= ",其中第一个

“=?”与“?”中间的部分指定了字符编码,在这个例子中指定的是 GB2312。“?”与“?”中间的“B”代表 Base64。如果是“Q”则代表 Quoted-Printable。最后“?”与“?=”之间的部分,就是经过 GB2312 转化成字节串,再经过Base64 转化后的标题内容。如果“传输编码”改为 Quoted-Printable,同样,如果标题内容为 "中":"=?GB2312?Q?=D6=D0?= " 。
 根据上面解释,那么解决这个bug已经没有问题了。在我们找到读取附件名的地方,如mFileName,位于Email/provider/EmailContent.java,首先对其进行base64Encode编

码:String name = com.android.email.Utility.base64Encode(mFileName),然后强制给name添加编码头和尾:String name2 = "=?utf8?B?" + name + "?="。这样接受邮件的客户端在检测到"=?utf8?B?"的时候,会对字符串进行base64和utf-8的转码,乱码也就不再出现。

分享到:
评论

相关推荐

    geronimo-javamail_1.4_spec-1.7.1.jar

    geronimo-javamail_1.4_spec-1.7.1.jar

    JavaMail邮件收发实例_JavaMail_API

    JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API

    geronimo-javamail_1.4_spec-1.6.jar

    不知道谁有这个jar的源码或者文档啊,希望能够分享一下:QQ:562387140

    JavaMail_API,JavaMail_API简介,JavaMail

    综上所述,JavaMail API 为开发者提供了一个强大的工具箱,不仅能够轻松处理邮件的发送和接收,还能支持多种邮件协议。无论是构建简单的邮件应用还是复杂的邮件管理系统,JavaMail API 都是值得考虑的选择。

    JavaMail+JAF+JavaMail_API+JavaMail_API详解

    JavaMail API是JavaMail库的核心部分,它提供了一系列的接口和类,用于创建、发送、接收和管理电子邮件。 JavaMail API详解.chm文件可能是一个帮助文档,详细介绍了如何使用JavaMail API进行邮件操作。它可能涵盖了...

    hyl.rar_javamail_javamail jsp_mail

    通过JavaMail,开发者可以创建、发送带有附件的邮件,处理邮件的接收,甚至进行邮件过滤和管理。 `javamail_jsp`则表明了如何在JSP页面中使用JavaMail。JSP是一种基于Java的服务器端脚本语言,用于生成动态网页内容...

    geronimo-javamail_1.4_provider-1.3.jar

    geronimo-javamail_1.4_provider-1.3.jar

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    根据描述中的信息,“原因为缺少某些jar包,例如geronimo-activation_1.1_spec-1.0.2.jar 和 geronimo-javamail_1.4_spec-1.3.jar”,这表明项目中缺少必要的邮件处理库。 - **解决方法**:需要检查项目的类路径中...

    邮件发送系统主体源程序.rar_javamail_邮件系统 linux

    首先,JavaMail提供了对SMTP(简单邮件传输协议)和其他邮件协议(如POP3、IMAP)的支持,允许开发者发送、接收和管理电子邮件。在“javamail发送程序”中,核心概念包括Session、Message、Transport等。Session是...

    javamail_test_QQmail

    这个"javamail_test_QQmail"示例可能是对以上步骤的实现,通过解压提供的"javamail"文件,你可以看到具体的代码实现,包括如何配置、构建和发送邮件的细节。学习并理解这个示例将有助于你更好地理解和使用JavaMail ...

    javamail.rar_javamail_模拟邮件系统

    邮局系统,简单的实现了其业务需求,模拟邮局收发邮件,采用嵌套字技术,在红帽环境下编程实现

    JavaMail_API基本原理

    JavaMail API 是Java平台上的一个标准扩展库,用于开发能够读写和发送电子邮件的应用程序。这个API的设计目标是实现与邮件服务提供商和具体协议无关的邮件操作,使得开发者可以轻松地在不同邮件系统间进行交互。...

    javamail 收发电子邮件

    JavaMail 是一个强大的开源库,专门用于在Java应用程序中实现电子邮件的发送和接收。它支持多种邮件协议,如SMTP(简单邮件传输协议)用于发送邮件,IMAP(因特网消息访问协议)和POP3(邮局协议)用于接收邮件。在...

    james和javamail实现邮件收发(带发送附件)

    JavaMail API提供了相应的设置,可以避免乱码问题。 5. **发送邮件**:最后,通过`Transport.send()`方法将邮件消息发送出去。在此过程中,JavaMail会与SMTP服务器建立连接,验证身份(如果需要),并传输邮件。 ...

    javamail收取邮件(包括附件)

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。它支持多种协议,如POP3(Post Office Protocol version 3)和IMAP(Internet Message Access Protocol),这两种协议常用于从邮件服务器...

    JavaMail接收邮件

    JavaMail是一种广泛使用的Java库,用于处理电子邮件的发送和接收。在Java应用程序中实现邮件接收功能,JavaMail是必不可少的工具。本教程将详细介绍如何利用JavaMail API来接收邮件。 首先,我们需要理解JavaMail的...

    基于javamail接收邮件源代码

    JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一套API,使得开发者能够方便地处理SMTP、POP3和IMAP等邮件协议。在给定的标题和描述中,我们讨论的是如何使用JavaMail API来接收邮件...

    bbx_data.rar_java mail_javamail_mail_实用 java

    5. **javamail_mail 实用性** - 支持HTML格式的邮件内容,可以创建丰富的展示效果。 - 支持S/MIME(安全多用途互联网邮件扩展)和PGP(Pretty Good Privacy)加密,保障邮件安全。 - 可以处理邮件中的嵌入式图像...

    java_mail.rar_ javamail_java mail_java 下载_javamail-1.4.1_javamai

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送、接收和管理。它提供了丰富的 API,使得开发者可以在 Java 应用程序中方便地访问邮件服务器。标题中的 "javamail-1.4.1" 和 "javamail-1.4.2" 提到了两个...

    通过JavaMail_API收发邮件

    详细讲解了利用javamail所提供的API来实现邮件收发的功能

Global site tag (gtag.js) - Google Analytics