Subversion Repositories SmartDukaan

Rev

Rev 4513 | Rev 4536 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3339 mandeep.dh 1
/**
2
 * 
3
 */
4
package in.shop2020.util;
5
 
6
import in.shop2020.model.v1.user.UserContextException;
7
 
8
import java.io.IOException;
9
import java.text.ParseException;
10
import java.util.Date;
11
import java.util.Properties;
12
 
4513 anupam.sin 13
import javax.mail.Flags;
4523 anupam.sin 14
import javax.mail.Flags.Flag;
3339 mandeep.dh 15
import javax.mail.Folder;
16
import javax.mail.Message;
17
import javax.mail.MessagingException;
18
import javax.mail.NoSuchProviderException;
19
import javax.mail.Session;
20
import javax.mail.Store;
21
import javax.mail.search.ComparisonTerm;
4513 anupam.sin 22
import javax.mail.search.FlagTerm;
3339 mandeep.dh 23
import javax.mail.search.ReceivedDateTerm;
24
 
25
import org.apache.commons.logging.Log;
26
import org.apache.commons.logging.LogFactory;
27
import org.apache.thrift.TException;
28
 
29
/**
30
 * @author mandeep
31
 * 
32
 */
33
public class EmailReader {
4513 anupam.sin 34
    private static final String PROCESSED_FLAG = "processed";
35
 
3339 mandeep.dh 36
    private static final Log log = LogFactory.getLog(EmailReader.class);
37
 
38
    Store                    store;
39
 
40
    private EmailReader(String username, String password) {
41
        Properties props = System.getProperties();
42
        props.setProperty("mail.store.protocol", "imaps");
43
        try {
44
            Session session = Session.getDefaultInstance(props, null);
45
            store = session.getStore("imaps");
46
            store.connect("imap.gmail.com", username, password);
47
        } catch (NoSuchProviderException e) {
48
            log.error("Error getting store", e);
49
        } catch (MessagingException e) {
50
            log.error("Error while connecting", e);
51
        }
52
    }
53
 
54
    public Folder getInboxFolder() throws MessagingException {
55
        return store.getFolder("inbox");
56
    }
57
 
58
    /**
59
     * @param args
60
     * @throws MessagingException
61
     * @throws ParseException
62
     * @throws TException
63
     * @throws UserContextException 
64
     */
65
    public static void main(String[] args) throws MessagingException,
66
            ParseException, TException, UserContextException {
4513 anupam.sin 67
        EmailReader helpEmailReader = new EmailReader("help@shop2020.in", "5h0p2o2o");
68
        Folder inbox = helpEmailReader.getInboxFolder();
69
        inbox.open(Folder.READ_WRITE);
3339 mandeep.dh 70
        CRMEmailProcessor crmEmailProcessor = new CRMEmailProcessor();
3368 mandeep.dh 71
 
4513 anupam.sin 72
        for (Message message : inbox.search(new FlagTerm(new Flags(PROCESSED_FLAG), false)))
3339 mandeep.dh 73
        {
74
            try {
4513 anupam.sin 75
                log.info("Processing Email from : " + message.getFrom() + "with subject: " + message.getSubject());
3373 mandeep.dh 76
                crmEmailProcessor.processEmail(message);
4513 anupam.sin 77
                Flags flags = new Flags(PROCESSED_FLAG);
78
                message.setFlags(flags, true);
4523 anupam.sin 79
                if (message.getFlags().contains(Flags.Flag.SEEN)) {
80
                    message.setFlag(Flags.Flag.SEEN, true);
81
                } else {
82
                    message.setFlag(Flags.Flag.SEEN, false);
83
                }
4513 anupam.sin 84
            } catch (Exception e) {
3339 mandeep.dh 85
                log.error("Could not process message: " + message, e);
86
            }
87
        }
4523 anupam.sin 88
        log.info("No message left to process, closing Inbox");
4513 anupam.sin 89
        inbox.close(false);
90
        helpEmailReader.store.close();
3339 mandeep.dh 91
    }
4523 anupam.sin 92
}