Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 api读取电子邮件,获取java.io.UnsupportedEncodingException_Java_Email - Fatal编程技术网

使用java mail api读取电子邮件,获取java.io.UnsupportedEncodingException

使用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邮件api(JDK1.6)阅读消息时遇到了问题。 我正在使用part.getContent()方法。在获取消息内容的同时,我得到了以下异常

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