网上有各种解决办法。但都是对中文进行编码。都试过了,都不行。包括

    String subject = new String(base64.encode((mailInfo.getSubject()).getBytes("UTF-8")));
       //mailMessage.setSubject("=?UTF-8?B?" + subject + "?=");
       mailMessage.setSubject(MimeUtility.encodeText(mailInfo.getSubject(), "UTF-8", "B"));
    //   mailMessage.setSubject(mailInfo.getSubject());

    mimeMsg.setSubject( MimeUtility.encodeText( Subject) );// 使用指定的base64方式编码,并指定编码内容的字符集是gb2312
    mimeMsg.setSubject( MimeUtility.encodeText( Subject,”gb2312”,”B”)); //B为base64方式、

    sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();

    newMessage.setSubject("=?GB2312?B?"+enc.encode(mail_subject.getBytes())+"?=");

    等等。最后发现是包冲突的问题。

     通过测试发现mail1.4.1.jar(即javax.mail)和 geronimo-javamail_1.4_spec-1.2.jar 冲突,所以把后者干掉即可。