JavaMail中标题乱码的问题! 试一下不用GB2312(直接转成ISO8859-1)或者用GBK(有没有可能是繁体)。http://www.csdn.net/develop/read_article.asp?id=16102http://www.csdn.net/develop/read_article.asp?id=16362 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void setSubject(String subject) throws Exception{ sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?="); }用这个应该可能解决 public String getSubject() throws MessagingException { String strSubject = "",temp=""; int pos = 0; String strMailSubject[] = message.getHeader("Subject"); boolean flag = MailAccount.A; String strCodingType = ""; if(strMailSubject == null) {// System.out.println("邮件头空值,返回[没有主题]"); return subject; } else {// System.out.println("原始长度 "+strMailSubject.length+" 内容 "+strMailSubject[0]); if(strMailSubject[0].indexOf("=?GB_2312-80?") != -1) strMailSubject[0] = StringUtil.replaceStr(strMailSubject[0], "=?GB_2312-80?", "=?GBK?"); try { if(strMailSubject[0].indexOf("=?ISO-8859-1?") != -1) { System.out.println("subject after decodeText =" + strMailSubject[0]); strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1")); } else if(strMailSubject[0].indexOf("=?gb2312?") != -1) { strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312")); } else if(strMailSubject[0].indexOf("=?GB2312?") != -1) { strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312")); } else if(strMailSubject[0].indexOf("=?GBK?") != -1) { strMailSubject[0] = new String(strMailSubject[0].getBytes("GBK")); } else if(strMailSubject[0].indexOf("=?big5?") != -1) strMailSubject[0] = new String(strMailSubject[0].getBytes("big5")); else {//正常字符集:ISO8859_1-->gb2312;主题ISO-8859-1-->gb2312;ISO-8859-1-->GBK; strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1"), "gb2312"); } strMailSubject[0] = MimeUtility.decodeText(strMailSubject[0]); } catch(UnsupportedEncodingException unsupportedencodingexception) { unsupportedencodingexception.printStackTrace(); cat.error("UnsupportedEncoding", unsupportedencodingexception); } } this.subject = strMailSubject[0]; if(subject == null) subject = ""; return subject; } 那个class实在难以理解 Android中 进程启动问题 如何列出前n天日期 如何显式地释放对象? 郁闷,迷茫,散分 关于获取文件属性的问题 Ajax 乱码 用JAVA实现一个点对点文件传输软件 两个类互相调用,怎么编译阿 jb7在设置server config时,没有ok按钮,只有reset to default按钮 一个小问题,请大家帮忙 快来看看这个程序错在哪里????????
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
}用这个应该可能解决
throws MessagingException
{
String strSubject = "",temp="";
int pos = 0;
String strMailSubject[] = message.getHeader("Subject");
boolean flag = MailAccount.A;
String strCodingType = "";
if(strMailSubject == null)
{// System.out.println("邮件头空值,返回[没有主题]");
return subject;
}
else
{// System.out.println("原始长度 "+strMailSubject.length+" 内容 "+strMailSubject[0]);
if(strMailSubject[0].indexOf("=?GB_2312-80?") != -1)
strMailSubject[0] = StringUtil.replaceStr(strMailSubject[0], "=?GB_2312-80?", "=?GBK?");
try
{
if(strMailSubject[0].indexOf("=?ISO-8859-1?") != -1)
{
System.out.println("subject after decodeText =" + strMailSubject[0]);
strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1"));
}
else if(strMailSubject[0].indexOf("=?gb2312?") != -1)
{
strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312"));
}
else if(strMailSubject[0].indexOf("=?GB2312?") != -1)
{
strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312"));
}
else if(strMailSubject[0].indexOf("=?GBK?") != -1)
{
strMailSubject[0] = new String(strMailSubject[0].getBytes("GBK"));
}
else if(strMailSubject[0].indexOf("=?big5?") != -1)
strMailSubject[0] = new String(strMailSubject[0].getBytes("big5"));
else
{//正常字符集:ISO8859_1-->gb2312;主题ISO-8859-1-->gb2312;ISO-8859-1-->GBK;
strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1"), "gb2312");
}
strMailSubject[0] = MimeUtility.decodeText(strMailSubject[0]);
}
catch(UnsupportedEncodingException unsupportedencodingexception)
{
unsupportedencodingexception.printStackTrace();
cat.error("UnsupportedEncoding", unsupportedencodingexception);
} } this.subject = strMailSubject[0];
if(subject == null)
subject = "";
return subject;
}