Pobieranie nieprzeczytanych emaili

0

Witam serdecznie.
Mam do napisania aplikację pobierającą wszystkie nieprzeczytane emaile ze skrzynki. Napisałem metodę i dla gmaila działa fajnie natomiast dla o2 nie chodzi. A mam postawione wymaganie że ma działać dla skrzynek o2 i gmaila albo przynajmniej o2. Metodę wkleiłem poniżej. W przypadku gmaila odczytuje tylko nieprzeczytane natomiast w przypadku o2 za każdym razem wszystkie poradzi ktoś coś na to?:) kombinowałem jeszcze z flaga RECENT ale dla niej gmail wcale nic nigdy nie odczytuje a o2 nadal wszystko.

public void downloadUnreadedEmailsFrom(String hostt, String userr, String passwordd) {
		try {
			// mail server info
			final String host = hostt;
			final String user = userr;
			final String password = passwordd;
			String email = "";

			// connect to my pop3 inbox in read-only mode
			// create properties field
			Properties properties = new Properties();

			properties.put("mail.pop3.host", host);
			properties.put("mail.pop3.port", "995");
			properties.put("mail.pop3.starttls.enable", "true");
			Session emailSession = Session.getInstance(properties, new javax.mail.Authenticator() {
				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication(user, password);
				}
			});

			System.out.println("Przed polaczeniem: "+ host+" "+user);

			// create the POP3 store object and connect with the pop server
			Store store = emailSession.getStore("pop3s");

			store.connect(host, user, password);

			System.out.println("Po połączeniu");

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

			// search for all "unseen" messages
			Flags seen = new Flags(Flags.Flag.SEEN);
			FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
			Message messages[] = inbox.search(unseenFlagTerm);

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

			for (int i = 0; i < messages.length; i++) {
				// stop after listing ten messages
				
				email += "Message number : " + messages[i].getMessageNumber() + System.lineSeparator();
				email += "From : " + messages[i].getFrom()[0] + System.lineSeparator();
				email += "Subject : " + messages[i].getSubject() + System.lineSeparator();
				email += "Sent Date : " + messages[i].getSentDate() + System.lineSeparator();
				Object body = messages[i].getContent();
				String bodyType = messages[i].getContentType();
				// if(body instanceof String){
				// email+="Body: "+System.lineSeparator()+body.toString();
				// }

				email += "Body: " + System.lineSeparator() + getContent(messages[i]);

				unreadEmails.add(email);

			}

			inbox.close(true);
			store.close();

			saveEmailsToTextFile();

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

Próbowałeś z flagą RECENT? Zrobiłam mały test i wygląda jakby to była właściwa flaga (Przynajmniej liczba nieprzeczytanych maili zgadza się z ilością maili znalezionych) ;)

        Flags seen = new Flags(Flags.Flag.RECENT);
        FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
        Message messages[] = inbox.search(unseenFlagTerm);

        System.out.println("Ilosc maili nieprzeczytanych: "+inbox.getUnreadMessageCount());
        System.out.println("Znalezionych maili: "+messages.length);
0

Rzeczywiście przy o2 wypisuje że liczba nieprzeczytanych z ilością pobranych sie zgadza ale jako nieprzeczytane bierze i tak wszystkie emaile:( czyli ta flaga nie działa. Przy gmailu to działa ale niestety musze to mieć na o2:(

1 użytkowników online, w tym zalogowanych: 0, gości: 1