Проблемы с получением почты из gmail в приложении Android - PullRequest
1 голос
/ 24 декабря 2011

Я использую java mail api, встроенный в java, чтобы получать почту пользователя из его почтового ящика, большую часть кода я нашел в другой вопрос SO .И я могу извлечь из моего почтового ящика большую часть нужной мне информации, например, тему, отправителей и другую информацию.

Все отлично работает, за исключением случаев, когда я иду, чтобы вытащить «содержание» сообщения.не всегда тянет содержание сообщения.Только как 1 в 10 раз это работает.Остальные 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 голосов
/ 24 декабря 2011

Если у кого-то еще есть эта проблема, то причина, по которой он не работал постоянно, состоит в том, что, когда он обнаружил составные сообщения, он не смог их прочитать. Ниже приведено решение для чтения составных писем. Я нашел большую часть кода на этом сайте .

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

                } 
2 голосов
/ 24 декабря 2011

Попробуйте,

imap.gmail.com заменено на smtp.gmail.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...