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");