2

これはばかげた質問かもしれませんが....

以下のコードは、gmail からすべてのメールを取得するために完全に機能します。ただし、アプリを一度実行した後、gmail は「ステータス: EXECUTION_APP_TIME 以降に到着したすべてのメールに対して POP が有効になっています」を「転送と POP/IMAP」設定で設定し、アプリは古いメッセージの取得を停止します (これは理にかなっています)。

アプリを実行するたびに gmail からすべてのメッセージを取得する必要がありますが、一度しか機能しません。1回の実行ごとに、gmailの「転送とPOP / IMAP」の設定を「すべてのメール(ダウンロード済みのメールも含む)でPOPを有効にする」に変更する必要があります。

誰かが私がそれを整理する方法を知っていますか? コードを使用して自動的に設定する方法はありますか。

ソースコードは次のとおりです。

public void connect(){
    Properties props = new Properties();
    props.put("mail.pop3.host" , "pop.gmail.com");
    props.put("mail.pop3.user" , username);
    // Start SSL connection
    props.put("mail.pop3.socketFactory" , 995 );
    props.put("mail.pop3.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
    props.put("mail.pop3.port" , 995);

    Log.e("asdasd", "teste");

    Session session = Session.getDefaultInstance(props , new Authenticator() {
        @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication( username , password);
                }
    });
    try {
        Store store  = session.getStore("pop3");
        store.connect("pop.gmail.com", 995 , username , password);
        Folder fldr = store.getFolder("Inbox");
        fldr.open(Folder.HOLDS_MESSAGES);

        int totalMsg = fldr.getMessageCount();
        int unread = fldr.getUnreadMessageCount();
        System.out.println("Total MSG: " + totalMsg + " unreaed: " + unread  );

        Message[] messages = fldr.getMessages();
        //Message[] msg = fldr.search(new FlagTerm(new Flags(Flag.SEEN), false));
        Message[] msg = messages;

        System.out.print("size " + messages .length);
        if (messages.length == 0) System.out.println("No messages found.");

        for (int i = 0; i < messages.length; i++) {

            System.out.println("Subject : " + messages[i].getSubject());

            if(messages[i].getSubject().equals("test223")){
                System.out.println("Message " + (i + 1));
                System.out.println("From : " + messages[i].getFrom()[0]);
                System.out.println("Subject : " + messages[i].getSubject());
                Object content = messages[i].getContent();

                if (content instanceof String)  
                    System.out.print((String)content);  
                /* text/plain = String
                 * multipart" = Multipart
                 * MimeMessage
                 * input stream = Unknown Data Handler 
                 */                 

                Multipart multipart = (Multipart) msg[i].getContent();

                for (int x = 0; x < multipart.getCount()-1; x++) {
                    BodyPart bodyPart = multipart.getBodyPart(x);

                    String disposition = bodyPart.getDisposition();

                    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());
                    }
                }
            }
        }

        fldr.close(true);
        store.close();


    } catch(Exception exc) {
        System.out.println(exc + " error");
    }       
}
4

0 に答える 0