Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mail MIME实用程序encodeText UnsupportedEncodingException BASE64_Java_Encoding_Base64_Jakarta Mail - Fatal编程技术网

Java Mail MIME实用程序encodeText UnsupportedEncodingException BASE64

Java Mail MIME实用程序encodeText UnsupportedEncodingException BASE64,java,encoding,base64,jakarta-mail,Java,Encoding,Base64,Jakarta Mail,作为我的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.jav

作为我的
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 8,那么有一个类可以解决这个问题

byte[] bytes = orig_mail_body.getBytes();
        Base64.Encoder encoder = Base64.getEncoder();
        String encode = encoder.encodeToString(bytes);
        System.out.print(encode);
使用spring:
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"));
}
使用apachecommons

org.apache.commons.codec.binary.Base64


Salud

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

body = MimeUtility.encodeText(orig_mail_body,"UTF-8","B");
确切地他们很清楚这一点,不是吗?一般来说,你不应该自己编码文本;JavaMail应该为您解决这个问题。更大的问题可能是你为什么要使用这种方法?
body = MimeUtility.encodeText(orig_mail_body,"UTF-8","B");