【问题标题】:Java Mail MimeUtility encodeText UnsupportedEncodingException BASE64Java Mail MimeUtility encodeText UnsupportedEncodingException BASE64
【发布时间】:2015-08-04 03:01:38
【问题描述】:

作为J2EE 应用程序电子邮件服务的一部分,我编码为BASE64

body = MimeUtility.encodeText(orig_mail_body,"UTF-8","BASE64");

但在某些情况下它会引发异常:

java.io.UnsupportedEncodingException: Unknown transfer encoding: BASE64
at javax.mail.internet.MimeUtility.encodeWord(MimeUtility.java:565)
at javax.mail.internet.MimeUtility.encodeText(MimeUtility.java:373)

我一直试图找出为什么我会收到此特定消息,但无济于事。 谁能照亮我?

【问题讨论】:

    标签: java encoding base64 jakarta-mail


    【解决方案1】:

    'encoding' 参数的唯一有效值似乎是“B”或“Q”;所以我的代码应该是:

    body = MimeUtility.encodeText(orig_mail_body,"UTF-8","B");
    

    【讨论】:

    • 没错。 javadocs 对此非常清楚,不是吗?通常,您永远不必自己编码文本; JavaMail 应该会为您处理好这些。更大的问题可能是您为什么要使用这种方法?
    【解决方案2】:

    如果你现在使用的是 java 8,那么有一个类可以解决这个问题。

    byte[] bytes = orig_mail_body.getBytes();
            Base64.Encoder encoder = Base64.getEncoder();
            String encode = encoder.encodeToString(bytes);
            System.out.print(encode);
    

    带弹簧:org.springframework.security.crypto.codec

        public static String base64Encode(String token) {
        byte[] encodedBytes = Base64.encode(token.getBytes());
        return new String(encodedBytes, Charset.forName("UTF-8"));
    }
    
    
    public static String base64Decode(String token) {
        byte[] decodedBytes = Base64.decode(token.getBytes());
        return new String(decodedBytes, Charset.forName("UTF-8"));
    }
    

    使用 Apache 公用

    org.apache.commons.codec.binary.Base64;

        byte[] encodedBytes = Base64.encodeBase64("Test".getBytes());
    System.out.println("encodedBytes " + new String(encodedBytes));
    byte[] decodedBytes = Base64.decodeBase64(encodedBytes);
    System.out.println("decodedBytes " + new String(decodedBytes));
    

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2022-06-12
      • 1970-01-01
      • 2019-01-15
      • 2012-12-08
      • 2011-11-02
      • 2017-10-10
      相关资源
      最近更新 更多