Subversion Repositories SmartDukaan

Rev

Rev 21881 | 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.text.ParseException;
9
import java.util.Properties;
10
 
4513 anupam.sin 11
import javax.mail.Flags;
3339 mandeep.dh 12
import javax.mail.Folder;
13
import javax.mail.Message;
14
import javax.mail.MessagingException;
15
import javax.mail.NoSuchProviderException;
16
import javax.mail.Session;
17
import javax.mail.Store;
4513 anupam.sin 18
import javax.mail.search.FlagTerm;
3339 mandeep.dh 19
 
20
import org.apache.commons.logging.Log;
21
import org.apache.commons.logging.LogFactory;
22
import org.apache.thrift.TException;
23
 
24
/**
25
 * @author mandeep
26
 * 
27
 */
28
public class EmailReader {
4513 anupam.sin 29
    private static final String PROCESSED_FLAG = "processed";
30
 
3339 mandeep.dh 31
    private static final Log log = LogFactory.getLog(EmailReader.class);
32
 
33
    Store                    store;
34
 
35
    private EmailReader(String username, String password) {
36
        Properties props = System.getProperties();
37
        props.setProperty("mail.store.protocol", "imaps");
38
        try {
39
            Session session = Session.getDefaultInstance(props, null);
40
            store = session.getStore("imaps");
41
            store.connect("imap.gmail.com", username, password);
42
        } catch (NoSuchProviderException e) {
43
            log.error("Error getting store", e);
44
        } catch (MessagingException e) {
45
            log.error("Error while connecting", e);
46
        }
47
    }
48
 
49
    public Folder getInboxFolder() throws MessagingException {
50
        return store.getFolder("inbox");
51
    }
52
 
53
    /**
54
     * @param args
55
     * @throws MessagingException
56
     * @throws ParseException
57
     * @throws TException
58
     * @throws UserContextException 
59
     */
60
    public static void main(String[] args) throws MessagingException,
61
            ParseException, TException, UserContextException {
4513 anupam.sin 62
        EmailReader helpEmailReader = new EmailReader("help@shop2020.in", "5h0p2o2o");
23839 amit.gupta 63
        //EmailReader pmHelpEmailReader = new EmailReader("help@smartdukaan.com", "Help@pm15");
4513 anupam.sin 64
        Folder inbox = helpEmailReader.getInboxFolder();
21881 amit.gupta 65
        //Folder pmInbox = pmHelpEmailReader.getInboxFolder();
4513 anupam.sin 66
        inbox.open(Folder.READ_WRITE);
21881 amit.gupta 67
        //pmInbox.open(Folder.READ_WRITE);
3339 mandeep.dh 68
        CRMEmailProcessor crmEmailProcessor = new CRMEmailProcessor();
3368 mandeep.dh 69
 
4513 anupam.sin 70
        for (Message message : inbox.search(new FlagTerm(new Flags(PROCESSED_FLAG), false)))
3339 mandeep.dh 71
        {
7297 anupam.sin 72
            boolean isRead = false;
3339 mandeep.dh 73
            try {
4513 anupam.sin 74
                log.info("Processing Email from : " + message.getFrom() + "with subject: " + message.getSubject());
7297 anupam.sin 75
                isRead = message.getFlags().contains(Flags.Flag.SEEN);
3373 mandeep.dh 76
                crmEmailProcessor.processEmail(message);
4513 anupam.sin 77
                Flags flags = new Flags(PROCESSED_FLAG);
78
                message.setFlags(flags, true);
4536 anupam.sin 79
                message.setFlag(Flags.Flag.SEEN, isRead);
4513 anupam.sin 80
            } catch (Exception e) {
3339 mandeep.dh 81
                log.error("Could not process message: " + message, e);
7297 anupam.sin 82
                Flags flags = new Flags(PROCESSED_FLAG);
83
                message.setFlags(flags, true);
84
                message.setFlag(Flags.Flag.SEEN, true);
3339 mandeep.dh 85
            }
86
        }
14882 manish.sha 87
 
21881 amit.gupta 88
        /*for (Message message : pmInbox.search(new FlagTerm(new Flags(PROCESSED_FLAG), false))){
14882 manish.sha 89
        	boolean isRead = false;
90
            try {
91
                log.info("Processing Email from : " + message.getFrom() + "with subject: " + message.getSubject());
92
                isRead = message.getFlags().contains(Flags.Flag.SEEN);
93
                crmEmailProcessor.processEmail(message);
94
                Flags flags = new Flags(PROCESSED_FLAG);
95
                message.setFlags(flags, true);
96
                message.setFlag(Flags.Flag.SEEN, isRead);
97
            } catch (Exception e) {
98
                log.error("Could not process message: " + message, e);
99
                Flags flags = new Flags(PROCESSED_FLAG);
100
                message.setFlags(flags, true);
101
                message.setFlag(Flags.Flag.SEEN, true);
102
            }
21881 amit.gupta 103
        }*/
4523 anupam.sin 104
        log.info("No message left to process, closing Inbox");
4513 anupam.sin 105
        inbox.close(false);
21881 amit.gupta 106
        //pmInbox.close(false);
4513 anupam.sin 107
        helpEmailReader.store.close();
21881 amit.gupta 108
        //pmHelpEmailReader.store.close();
3339 mandeep.dh 109
    }
4523 anupam.sin 110
}