试一下不用GB2312(直接转成ISO8859-1)或者用GBK(有没有可能是繁体)。http://www.csdn.net/develop/read_article.asp?id=16102http://www.csdn.net/develop/read_article.asp?id=16362

解决方案 »

  1.   

    void setSubject(String subject) throws Exception{
        sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
        msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
      }用这个应该可能解决
      

  2.   

    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;
        }