Как синхронизировать электронную почту приложения с электронной почтой сервера, используя почту Java в Android? - PullRequest
4 голосов
/ 31 марта 2012

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

В моем почтовом приложении используется почтовый файл JAR, Activation.jar, дополнительный файл JAR и следующий код используются для подключения приложения электронной почты к серверу электронной почты:

Properties props = System.getProperties();
            props.setProperty("mail.store.protocol", "imaps");
            props.put("mail.smtp.starttls.enable","true");
            Authenticator auth = new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication("USEREMAILID","PASSWORD ");
                    }
            };
            sessioned= Session.getDefaultInstance(props, auth);
            store = sessioned.getStore("imaps");
           store.connect("smtp.gmail.com","USEREMAILID","PASSWORD ");
             inbox = store.getFolder("inbox");
            inbox.open(Folder.READ_ONLY);
            FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
            UNReadmessages = inbox.search(ft);

Ответы [ 2 ]

4 голосов
/ 05 апреля 2012

Я решил проблему.
Никогда не закрывайте соединение во время выполнения, используя приведенный ниже код.

   inbox.open(Folder.READ_WRITE);
2 голосов
/ 31 марта 2012

Если вы делаете это, находясь «в сети», с подключенным хранилищем и открытой папкой, изменения, которые вы делаете через API JavaMail, немедленно отражаются на сервере. Вы и ваша программная логика должны гарантировать, что (например) ваше действие пользовательского интерфейса, помечающее прочитанное или непрочитанное сообщение, приведет к соответствующей операции JavaMail.

Обратите внимание, что, в частности, для "чтения" при извлечении содержимого сообщения сервер помечает сообщение как прочитанное без каких-либо других явных действий, необходимых с вашей стороны.

Если вы хотите, чтобы все это происходило, когда приложение находилось в автономном режиме, и выполняло повторную синхронизацию при следующем подключении к сети, это намного сложнее. В FAQ по JavaMail есть несколько советов, которые помогут с этим.

...