Subversion Repositories SmartDukaan

Rev

Rev 3408 | Rev 4523 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3408 Rev 4513
Line 8... Line 8...
8
import java.io.IOException;
8
import java.io.IOException;
9
import java.text.ParseException;
9
import java.text.ParseException;
10
import java.util.Date;
10
import java.util.Date;
11
import java.util.Properties;
11
import java.util.Properties;
12
 
12
 
-
 
13
import javax.mail.Flags;
13
import javax.mail.Folder;
14
import javax.mail.Folder;
14
import javax.mail.Message;
15
import javax.mail.Message;
15
import javax.mail.MessagingException;
16
import javax.mail.MessagingException;
16
import javax.mail.NoSuchProviderException;
17
import javax.mail.NoSuchProviderException;
17
import javax.mail.Session;
18
import javax.mail.Session;
18
import javax.mail.Store;
19
import javax.mail.Store;
19
import javax.mail.search.ComparisonTerm;
20
import javax.mail.search.ComparisonTerm;
-
 
21
import javax.mail.search.FlagTerm;
20
import javax.mail.search.ReceivedDateTerm;
22
import javax.mail.search.ReceivedDateTerm;
21
 
23
 
22
import org.apache.commons.logging.Log;
24
import org.apache.commons.logging.Log;
23
import org.apache.commons.logging.LogFactory;
25
import org.apache.commons.logging.LogFactory;
24
import org.apache.thrift.TException;
26
import org.apache.thrift.TException;
Line 26... Line 28...
26
/**
28
/**
27
 * @author mandeep
29
 * @author mandeep
28
 * 
30
 * 
29
 */
31
 */
30
public class EmailReader {
32
public class EmailReader {
-
 
33
    private static final String PROCESSED_FLAG = "processed";
-
 
34
 
31
    private static final Log log = LogFactory.getLog(EmailReader.class);
35
    private static final Log log = LogFactory.getLog(EmailReader.class);
32
 
36
 
33
    Store                    store;
37
    Store                    store;
34
 
38
 
35
    private EmailReader(String username, String password) {
39
    private EmailReader(String username, String password) {
Line 57... Line 61...
57
     * @throws TException
61
     * @throws TException
58
     * @throws UserContextException 
62
     * @throws UserContextException 
59
     */
63
     */
60
    public static void main(String[] args) throws MessagingException,
64
    public static void main(String[] args) throws MessagingException,
61
            ParseException, TException, UserContextException {
65
            ParseException, TException, UserContextException {
62
        Folder inbox = new EmailReader("help@shop2020.in", "5h0p2o2o").getInboxFolder();
66
        EmailReader helpEmailReader = new EmailReader("help@shop2020.in", "5h0p2o2o");
-
 
67
        Folder inbox = helpEmailReader.getInboxFolder();
63
        inbox.open(Folder.READ_ONLY);
68
        inbox.open(Folder.READ_WRITE);
64
        CRMEmailProcessor crmEmailProcessor = new CRMEmailProcessor();
69
        CRMEmailProcessor crmEmailProcessor = new CRMEmailProcessor();
65
        Date lastProcessedEmailTimestamp = crmEmailProcessor.getLastProcessedTimestamp();
-
 
66
        Date lastReceivedEmailTimestamp = lastProcessedEmailTimestamp;
-
 
67
 
70
 
68
        for (Message message : inbox.search(new ReceivedDateTerm(
71
        for (Message message : inbox.search(new FlagTerm(new Flags(PROCESSED_FLAG), false)))
69
                ComparisonTerm.GE, lastProcessedEmailTimestamp)))
-
 
70
        {
72
        {
71
            try {
73
            try {
72
                // Skipping mails received before the last processed timestamp
-
 
73
                if (!lastProcessedEmailTimestamp.before(message.getReceivedDate())) {
-
 
74
                    continue;
-
 
75
                }
-
 
76
 
-
 
77
                log.info("Processing message with Receive date: " + message.getReceivedDate() + " and subject: " + message.getSubject());
74
                log.info("Processing Email from : " + message.getFrom() + "with subject: " + message.getSubject());
78
                crmEmailProcessor.processEmail(message);
75
                crmEmailProcessor.processEmail(message);
79
                lastReceivedEmailTimestamp = message.getReceivedDate();
76
                Flags flags = new Flags(PROCESSED_FLAG);
80
            } catch (IOException e) {
77
                message.setFlags(flags, true);
81
                log.error("Could not process message: " + message, e);
-
 
82
            } catch (TException e) {
78
            } catch (Exception e) {
83
                log.error("Could not process message: " + message, e);
-
 
84
            } catch (MessagingException e) {
-
 
85
                log.error("Could not process message: " + message, e);
79
                log.error("Could not process message: " + message, e);
86
            }
80
            }
87
        }
81
        }
88
 
-
 
-
 
82
        inbox.close(false);
89
        crmEmailProcessor.updateLastProcessedTimestamp(lastReceivedEmailTimestamp);
83
        helpEmailReader.store.close();
90
    }
84
    }
91
}
85
}