知识大全 JavaMail发送中文邮件中主题乱码的解决方法

Posted 标题

篇首语:我以为我们之间的故事是我一辈子都不会忘记的事情,后来我才发现,在念念不忘的日子里,我遗忘了我们之间的故事。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JavaMail发送中文邮件中主题乱码的解决方法相关的知识,希望对你有一定的参考价值。

JavaMail发送中文邮件中主题乱码的解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    我们的程序经常会出现这样一个问题 在WinXp下测试是正常的 而到了服务器(Linux操作系统)上就出现这个问题         由于邮件我写的程序的邮件主题是写在配置文件(  properties)中的 再通过native ascii把中文邮件主题从本地码(简体中文Wind Xp 是GBK)转换为Unicode 编码 而Java程序读取properties配置文件内容时 是根据操作的编码方式来读取的 这样就造成程序的可移植性差         没有指定邮件主题的编码方式    当一段 Text 或者 HTML 通过电子邮件传送时 发送的内容首先通过一种指定的字符编码转化成 字节串 然后再把 字节串 通过一种指定的传输编码(Content Transfer Encoding)进行转化得到另一串 字节串 比如 打开一封电子邮件源代码 可以看到类似的内容 Content Type: text/plain;charset= gb Content Transfer Encoding: base sbG+qcrQuqO cf yee bGjz W +b wudzA dbQ MQNCg KvPKzxqO uqO cnnsaPW NDEDQoNCg==最常用的 Content Transfer Encoding 有 Base  和 Quoted Printable 两种 在对二进制文件或者中文文本进行转化时 Base  得到的 字节串 比 Quoted Printable 更短 在对英文文本进行转化时 Quoted Printable 得到的 字节串 比 Base  更短     邮件的标题 用了一种更简短的格式来标注 字符编码 和 传输编码 比如 标题内容为  中 则在邮件源代码中表示为 // 正确的标题格式Subject: =?GB ?B? tA=?=其中 第一个 =? 与 ? 中间的部分指定了字符编码 在这个例子中指定的是 GB   ? 与 ? 中间的 B 代表 Base 如果是 Q 则代表 Quoted Printable  最后 ? 与 ?= 之间的部分 就是经过 GB  转化成字节串 再经过Base  转化后的标题内容  如果 传输编码 改为 Quoted Printable 同样 如果标题内容为  中 // 正确的标题格式Subject: =?GB ?Q?=D =D ?=    如果阅读邮件时出现乱码 一般是因为 字符编码 或 传输编码 指定有误 或者是没有指定 比如 有的发邮件组件在发送邮件时 标题  中 // 错误的标题格式Subject: =?ISO ?Q?=D =D ?=这样的表示 实际上是明确指明了标题为 [ x D   x D ] 即  ÖÐ 而不是  中         解决方法( ) 修改操作系统编码方式为GBK 或在服务器上通过native ascii把邮件主题重新生成Unicode 编码 并更新配置文件内容 ( ) 给邮件主题指定编码方式 sun misc BASE Encoder enc = new sun misc BASE Encoder();  msg setSubject( =?GB ?B? +enc encode(subject getBytes())+ ?= );    建议 带有中文的配置文件 尽量不用*  properties文件 而用XML文件替代 cha138/Article/program/Java/hx/201311/26904

相关参考

知识大全 JavaMail常见问题之发送邮件问题

JavaMail常见问题之发送邮件问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问我如何回

知识大全 用JavaMail写简易电子邮件发送系统

用JavaMail写简易电子邮件发送系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言  

知识大全 Java发送邮件

Java发送邮件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  记得曾经学习用javamail发

知识大全 解决.NET平台邮件发送CDO.Message错误

解决.NET平台邮件发送CDO.Message错误  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 .NET环境下五种邮件发送解决方案

.NET环境下五种邮件发送解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用outLo

知识大全 如何在Spring中解决中文乱码的方法

如何在Spring中解决中文乱码的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  软件环境J

知识大全 ajax中如何解决中文乱码

  在action中加入responsesetContentType(text/;charset=GBK);来设置编码格式就可以了  因为  使用ajax在发出请求后xml组件在解析返回数据的编码时是

知识大全 JAVAMAIL邮件服务器

JAVAMAIL邮件服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果你认为没有必要设置

知识大全 解决java中文乱码

解决java中文乱码cd/usr/lib/jvm/javasun/jre/lib/fontssudomkdirfallbackcdfallbacksudocp/usr/share/fonts/true

知识大全 用javamail显示复合邮件的内容的亲身体会

  复合邮件既含图片又含正文一般是格式显示简单理解的话就是非常漂亮的那种邮件    (个人注解不很全面)        当我们需要做一个收取邮件的程序时我们该如何去显示复合邮件的内容呢?(原问题见专家