public void setMarshaler(MimeMailMarshaler marshaler) {
this.marshaler = marshaler;
}
public void poll() throws Exception {
Store store = null;
Folder folder = null;
try {
session.setDebug(isDebug());
store = session.getStore((mailBox.equals("INBOX")) ? "pop3"
: "imap");
store.connect(hostName, userName, password);
folder = store.getFolder(mailBox);
if (folder == null || !folder.exists()) {
throw new Exception("Folder not found or invalid: " + mailBox);
}
folder.open(Folder.READ_WRITE);
int msgCount = Math.min(folder.getMessageCount(),maxFetchSize);
DeliveryChannel channel = getDeliveryChannel();
MessageExchangeFactory mef = getExchangeFactory();
for(int i=1; i <= msgCount;i++) {
MimeMessage mailMsg = (MimeMessage) folder.getMessage(i);
InOnly io = mef.createInOnlyExchange();
NormalizedMessage normalizedMessage = io.createMessage();
this.marshaler.prepareExchange(io,normalizedMessage,mailMsg);
io.setInMessage(normalizedMessage);
channel.send(io);
mailMsg.setFlag(Flags.Flag.DELETED,true);
}
} finally {
try {
if (folder != null) {
folder.close(true);
}
if (store != null) {
store.close();
}
} catch (Exception ignored) {}
}
}