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