使用java mail api读取电子邮件,获取java.io.UnsupportedEncodingException
我在使用java邮件api(JDK1.6)阅读消息时遇到了问题。 我正在使用part.getContent()方法。在获取消息内容的同时,我得到了以下异常使用java mail api读取电子邮件,获取java.io.UnsupportedEncodingException,java,email,Java,Email,我在使用java邮件api(JDK1.6)阅读消息时遇到了问题。 我正在使用part.getContent()方法。在获取消息内容的同时,我得到了以下异常 java.io.UnsupportedEncodingException: X-iso885915 java.io.UnsupportedEncodingException: windows-1252http-equivContent-type java.io.UnsupportedEncodingException: _iso-2022-j
java.io.UnsupportedEncodingException: X-iso885915
java.io.UnsupportedEncodingException: windows-1252http-equivContent-type
java.io.UnsupportedEncodingException: _iso-2022-jp$ESC
java.io.UnsupportedEncodingException: iso-8859-1
java.io.UnsupportedEncodingException: x-ias-norwegian
java.io.UnsupportedEncodingException: X-iso885915
java.io.UnsupportedEncodingException: cp-850
有没有办法绕过这些编码异常。我需要读取发件人、收件人、收到邮件的时间以及邮件中的附件。我不需要读正文。因为这种类型的字符集可能更多。因此,如何正确地阅读这种类型的编码信息。我在谷歌上搜索了很多,但除了提示sun jdk可能不支持这些字符集之外,没有找到任何解决方案
谢谢。我找到了一个可能有用的解决方案。但我不确定这是否是正确的解决方案 例如,我们可以定义一个自定义字符集提供程序,并将其告知jdk
package path.to.UnknownCharsetProvider;
import java.nio.charset.*;
import java.nio.charset.spi.*;
import java.util.*;
public class UnknownCharsetProvider extends CharsetProvider {
private static final String badCharset = "_iso-2022-jp$ESC";
private static final String goodCharset = "iso-8859-1";
public Charset charsetForName(String charset) {
if (charset.equalsIgnoreCase(badCharset))
return Charset.forName(goodCharset);
return null;
}
public Iterator<Charset> charsets() {
return null;
}
}
package path.to.UnknownCharsetProvider;
导入java.nio.charset.*;
导入java.nio.charset.spi.*;
导入java.util.*;
公共类UnknownCharsetProvider扩展了CharsetProvider{
私有静态最终字符串badCharset=“_iso-2022-jp$ESC”;
专用静态最终字符串goodCharset=“iso-8859-1”;
公共字符集charsetForName(字符串字符集){
if(字符集相等信号案例(badCharset))
返回Charset.forName(goodCharset);
返回null;
}
公共迭代器字符集(){
返回null;
}
}
为了让JDK知道这一点,在META-INF目录的服务文件夹中定义一个名为“java.nio.charset.spi.CharsetProvider”的文件,并在其中输入您的charset provider,以便执行以下操作:。
path.to.UnknownCharsetProvider
而对于坏字符集,它将返回您想要返回的字符集。但是,我不确定您为坏字符集提供的字符集是否能够正确解码消息文本。否:(
问题Q:为什么在对包含文本数据的bodypart调用getContent()时会出现UnsupportedEncodingException