Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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
Javamail中的FolderClosed异常_Java_Android_Exception_Directory_Jakarta Mail - Fatal编程技术网

Javamail中的FolderClosed异常

Javamail中的FolderClosed异常,java,android,exception,directory,jakarta-mail,Java,Android,Exception,Directory,Jakarta Mail,我试图在android中创建一个简单的邮件客户端,我的应用程序中编译并运行了android版本的javamail 然而,每当我尝试连接和接收邮件时,我都会收到一个文件夹关闭异常,如下所示 10-23 12:12:13.484: W/System.err(6660): javax.mail.FolderClosedException 10-23 12:12:13.484: W/System.err(6660): at com.sun.mail.imap.IMAPMessage.getPro

我试图在android中创建一个简单的邮件客户端,我的应用程序中编译并运行了android版本的javamail

然而,每当我尝试连接和接收邮件时,我都会收到一个文件夹关闭异常,如下所示

10-23 12:12:13.484: W/System.err(6660): javax.mail.FolderClosedException
10-23 12:12:13.484: W/System.err(6660):     at com.sun.mail.imap.IMAPMessage.getProtocol(IMAPMessage.java:149)
10-23 12:12:13.484: W/System.err(6660):     at com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1262)
10-23 12:12:13.484: W/System.err(6660):     at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:616)
10-23 12:12:13.484: W/System.err(6660):     at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1398)
10-23 12:12:13.484: W/System.err(6660):     at com.teamzeta.sfu.Util.MailHelper.getMessageHTML(MailHelper.java:60)
10-23 12:12:13.484: W/System.err(6660):     at com.teamzeta.sfu.GetAsyncEmails.onPostExecute(EmailActivity.java:31)
10-23 12:12:13.484: W/System.err(6660):     at com.teamzeta.sfu.GetAsyncEmails.onPostExecute(EmailActivity.java:1)
10-23 12:12:13.484: W/System.err(6660):     at android.os.AsyncTask.finish(AsyncTask.java:631)
10-23 12:12:13.484: W/System.err(6660):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
10-23 12:12:13.484: W/System.err(6660):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-23 12:12:13.484: W/System.err(6660):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-23 12:12:13.484: W/System.err(6660):     at android.os.Looper.loop(Looper.java:137)
10-23 12:12:13.484: W/System.err(6660):     at android.app.ActivityThread.main(ActivityThread.java:5227)
10-23 12:12:13.484: W/System.err(6660):     at java.lang.reflect.Method.invokeNative(Native Method)
10-23 12:12:13.484: W/System.err(6660):     at java.lang.reflect.Method.invoke(Method.java:511)
10-23 12:12:13.484: W/System.err(6660):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
10-23 12:12:13.484: W/System.err(6660):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
10-23 12:12:13.494: W/System.err(6660):     at dalvik.system.NativeStart.main(Native Method)
我的代码如下:

public static Message[] getAllMail(String user, String pwd){
        String host = "imap.sfu.ca";

        final Message[] NO_MESSAGES = {};

        Properties properties = System.getProperties();
        properties.setProperty("mail.imap.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.imap.socketFactory.port", "993");

        Session session = Session.getDefaultInstance(properties);

        try {
            Store store = session.getStore("imap");
            store.connect(host, user, pwd);

            Folder folder = store.getFolder("inbox");
            folder.open(Folder.READ_ONLY);

            Message[] messages = folder.getMessages();

            folder.close(true);
            store.close();

            Log.d("####TEAM ZETA DEBUG####", "Content: " + messages.length);

            return messages;

        } catch (NoSuchProviderException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Log.d("####TEAM ZETA DEBUG####", "Returning NO_MESSAGES");
        return NO_MESSAGES;
    }

public static String getMessageHTML(Message message){
    Object msgContent;
    try {
        msgContent = message.getContent();
        if (msgContent instanceof Multipart) {
            Multipart mp = (Multipart) msgContent;
            for (int i = 0; i < mp.getCount(); i++) {
                BodyPart bp = mp.getBodyPart(i);
                if (Pattern
                        .compile(Pattern.quote("text/html"),
                                Pattern.CASE_INSENSITIVE)
                        .matcher(bp.getContentType()).find()) {
                    // found html part
                    return (String) bp.getContent();
                } else {
                    // some other bodypart...
                }
            }
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       

    return "Something went wrong";
}
公共静态消息[]getAllMail(字符串用户,字符串pwd){
String host=“imap.sfu.ca”;
最终消息[]无消息={};
Properties=System.getProperties();
properties.setProperty(“mail.imap.socketFactory.class”,
“javax.net.ssl.SSLSocketFactory”);
properties.setProperty(“mail.imap.socketFactory.port”,“993”);
Session Session=Session.getDefaultInstance(属性);
试一试{
Store Store=session.getStore(“imap”);
存储连接(主机、用户、pwd);
Folder Folder=store.getFolder(“收件箱”);
文件夹。打开(文件夹。只读);
Message[]messages=folder.getMessages();
文件夹。关闭(true);
store.close();
Log.d(“##############”,“内容:+消息.长度);
返回消息;
}捕获(无此提供异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(消息异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Log.d(“#############”,“不返回任何消息”);
不返回任何消息;
}
公共静态字符串getMessageHTML(消息消息){
对象msgContent;
试一试{
msgContent=message.getContent();
if(多部分的msgContent实例){
多部分mp=(多部分)msgContent;
对于(int i=0;i
我在网上找不到任何有用的东西,有人知道为什么会发生这种情况吗

这是叫进来的

class GetAsyncEmails extends AsyncTask<String, Integer, Message[]>{

@Override
protected Message[] doInBackground(String... args) {
    // TODO Auto-generated method stub
    Message[] messages = MailHelper.getAllMail(args[0], args[1]);

    return messages;
}

protected void onPostExecute(Message[] result){
    if(result.length > 1){
        Message message = result[0];
        String content = MailHelper.getMessageHTML(message);        
        System.out.println("####TEAM ZETA DEBUG####" + content);
    }
}
类getAsyncTask{
@凌驾
受保护的消息[]doInBackground(字符串…args){
//TODO自动生成的方法存根
Message[]messages=MailHelper.getAllMail(args[0],args[1]);
返回消息;
}
受保护的void onPostExecute(消息[]结果){
如果(result.length>1){
消息消息=结果[0];
String content=MailHelper.getMessageHTML(消息);
System.out.println(“#############”+内容);
}
}

}

在对另一个用户给出的答案进行了一些修改后(由于某些原因,该答案已不在这里),我发现自己做错了什么

当我从消息中获取内容时,商店仍需要打开才能这样做

在查找FolderClosed异常后,它使事情变得更清楚:“当在消息传递对象上调用方法并且拥有该对象的文件夹由于某种原因已死亡时,将引发此异常。”

因为我很早就关闭了文件夹,并且调用了一些方法,所以我得到了一个错误


因此,我想当应用程序关闭时,您需要关闭应用商店。

为什么不发布实际代码?你的stacktrace中没有getAllMail。你可以添加你调用的代码
getAllMail()
method我想这是
500000
第个java标记问题XD我能得到cookie吗?(剩下的代码很快就会发布,只是在某个中间)剩下的代码发布了,很抱歉。