Subversion Repositories SmartDukaan

Rev

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