首页 文章

在Android应用中从gmail检索电子邮件时出现问题

提问于
浏览
1

我正在使用java内置的java mail api从他们的gmail框中获取用户的邮件,我在another SO question中找到了大部分代码 . 而且我能够正确地提取我想要的大部分信息,例如来自我邮箱的主题,发件人和其他信息 .

一切都很好,除非我去拉消息的"content",它并不总是拉消息的内容 . 它只有十分之一的效果 . 其他9次它只找到“ javax.mail.internet.MimeMultipart@40e9c920

我的代码如下 . 我将输出打印到 LogCat 进行测试 . 提前致谢 .

Properties props = System.getProperties();
            Session session = Session.getDefaultInstance(props, null);
            Store store = session.getStore("imaps");
            store.connect("imap.gmail.com", "Email address here",
                    "password here");
            Folder inbox = store.getFolder("Inbox");
            inbox.open(Folder.READ_ONLY);
            Message messages[] = inbox.getMessages();
            for (Message message : messages)
                Log.d("Email", message + "");
            Message message[] = inbox.getMessages();

                    for (int i = 0; i < 25; i++) {
                        Log.d("From", message[i].getFrom()[0] + "");
                        Log.d("Subject", message[i].getSubject() + "");
                        String content = message[i].getContent().toString();
                        Log.d("content", content + "");

                    }

编辑:经过一些额外的研究后,我发现它与使用JavaMail阅读多部分电子邮件有关

2 回答

  • 3

    试试这个,

    imap.gmail.com replaced by smtp.gmail.com

  • 2

    如果其他人有这个问题,那么它一直无法工作的原因是当它发现多部分消息时它无法读取它们 . 以下是阅读多部分电子邮件的解决方案 . 我找到了大部分代码on this website .

    String s = message[i].getContent() + "";
    
                        if(s.indexOf("MimeMultipart") != -1){
                            Multipart multipart = (Multipart) message[i].getContent();
    
                              for (int x = 0; x < multipart.getCount(); x++) {
                              BodyPart bodyPart = multipart.getBodyPart(x);
    
                              String disposition = bodyPart.getDisposition();
                              //Log.d("disposition", disposition + "");
    
                              if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT))) {
                                  System.out.println("Mail have some attachment : ");
    
                                  DataHandler handler = bodyPart.getDataHandler();
                                  System.out.println("file name : " + handler.getName());
                                  } else {
                                  System.out.println(bodyPart.getContent());
                                  }
                                  }
                                  System.out.println();
    
    
    
                              }
    
                        else
                            Log.d("Content", message[i].getContent() + "");
    
                    }
    

相关问题