Rev 14882 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****/package in.shop2020.util;import in.shop2020.model.v1.user.UserContextException;import java.text.ParseException;import java.util.Properties;import javax.mail.Flags;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.NoSuchProviderException;import javax.mail.Session;import javax.mail.Store;import javax.mail.search.FlagTerm;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.thrift.TException;/*** @author mandeep**/public class EmailReader {private static final String PROCESSED_FLAG = "processed";private static final Log log = LogFactory.getLog(EmailReader.class);Store store;private EmailReader(String username, String password) {Properties props = System.getProperties();props.setProperty("mail.store.protocol", "imaps");try {Session session = Session.getDefaultInstance(props, null);store = session.getStore("imaps");store.connect("imap.gmail.com", username, password);} catch (NoSuchProviderException e) {log.error("Error getting store", e);} catch (MessagingException e) {log.error("Error while connecting", e);}}public Folder getInboxFolder() throws MessagingException {return store.getFolder("inbox");}/*** @param args* @throws MessagingException* @throws ParseException* @throws TException* @throws UserContextException*/public static void main(String[] args) throws MessagingException,ParseException, TException, UserContextException {EmailReader helpEmailReader = new EmailReader("help@shop2020.in", "5h0p2o2o");//EmailReader pmHelpEmailReader = new EmailReader("help@profitmandi.com", "Help@pm15");Folder inbox = helpEmailReader.getInboxFolder();//Folder pmInbox = pmHelpEmailReader.getInboxFolder();inbox.open(Folder.READ_WRITE);//pmInbox.open(Folder.READ_WRITE);CRMEmailProcessor crmEmailProcessor = new CRMEmailProcessor();for (Message message : inbox.search(new FlagTerm(new Flags(PROCESSED_FLAG), false))){boolean isRead = false;try {log.info("Processing Email from : " + message.getFrom() + "with subject: " + message.getSubject());isRead = message.getFlags().contains(Flags.Flag.SEEN);crmEmailProcessor.processEmail(message);Flags flags = new Flags(PROCESSED_FLAG);message.setFlags(flags, true);message.setFlag(Flags.Flag.SEEN, isRead);} catch (Exception e) {log.error("Could not process message: " + message, e);Flags flags = new Flags(PROCESSED_FLAG);message.setFlags(flags, true);message.setFlag(Flags.Flag.SEEN, true);}}/*for (Message message : pmInbox.search(new FlagTerm(new Flags(PROCESSED_FLAG), false))){boolean isRead = false;try {log.info("Processing Email from : " + message.getFrom() + "with subject: " + message.getSubject());isRead = message.getFlags().contains(Flags.Flag.SEEN);crmEmailProcessor.processEmail(message);Flags flags = new Flags(PROCESSED_FLAG);message.setFlags(flags, true);message.setFlag(Flags.Flag.SEEN, isRead);} catch (Exception e) {log.error("Could not process message: " + message, e);Flags flags = new Flags(PROCESSED_FLAG);message.setFlags(flags, true);message.setFlag(Flags.Flag.SEEN, true);}}*/log.info("No message left to process, closing Inbox");inbox.close(false);//pmInbox.close(false);helpEmailReader.store.close();//pmHelpEmailReader.store.close();}}