Witam.
Próbuję napisać receiver'a poczty w oparciu o IMAP wykorzystując do tego JavaMail. Wszystko poszło gładko do momentu zaciągania szczegółowych informacji (Subject, From etc jest pobierane przy getMessages() - dodatkowe informację muszę zaciągnąć metodą fetch() - jeśli wszystko dobrze zrozumiałem).
Oto mój kod:
public static void main(String[] args) {
IMAPFolder inbox;
Properties properties = System.getProperties();
properties.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(properties, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "******@gmail.com", "******");
inbox = (IMAPFolder) store.getFolder("Inbox");
System.out.println("Unread messages count: " + inbox.getUnreadMessageCount());
inbox.open(Folder.READ_WRITE);
Message messages[] = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false));
FetchProfile fp = new FetchProfile();
// fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.CONTENT_INFO);
// fp.add(FetchProfile.Item.FLAGS);
System.out.println(messages[0].getSubject());
inbox.fetch(messages, fp);
for (Message mess : messages) {
printMessage(mess);
}
inbox.close(true);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
oto błąd który dostaje:
Exception in thread "main" java.lang.NullPointerException
at javax.mail.internet.ParameterList.set(ParameterList.java:165)
at com.sun.mail.imap.protocol.BODYSTRUCTURE.parseParameters(BODYSTRUCTURE.java:392)
at com.sun.mail.imap.protocol.BODYSTRUCTURE.<init>(BODYSTRUCTURE.java:232)
at com.sun.mail.imap.protocol.BODYSTRUCTURE.<init>(BODYSTRUCTURE.java:117)
at com.sun.mail.imap.protocol.FetchResponse.parse(FetchResponse.java:159)
at com.sun.mail.imap.protocol.FetchResponse.<init>(FetchResponse.java:68)
at com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:137)
at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:261)
at com.sun.mail.iap.Protocol.command(Protocol.java:310)
at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:1312)
at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:1293)
at com.sun.mail.imap.IMAPMessage.fetch(IMAPMessage.java:1045)
at com.sun.mail.imap.IMAPFolder.fetch(IMAPFolder.java:1021)
at com.springloops.ws.spike.EmailReceiveSpike.main(EmailReceiveSpike.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Ma ktoś pomysł na to co robię źle