· 7 years ago · Nov 30, 2018, 07:44 AM
1public class idlemonitor {
2
3static String protocol;
4static String host = null;
5static String user = null;
6static String password = null;
7static String url = null;
8static int port = -1;
9static boolean verbose = false;
10static boolean debug = false;
11static String Message = "";
12
13
14
15public void main(MessageProducer producer) {
16
17 protocol = "imap"; //""imaps";
18
19 host = "imap.gmail.com";
20
21 user = "test@imap.gmail.com";
22
23 password = "abcXXXX123";
24
25 verbose = true;
26
27 debug = false;
28
29 url = "mail.google.com"; //mail.google.com"
30
31 port = 143;
32
33 System.out.println(
34 "Usage: test.idlemonitor [-L url] [-T protocol] [-H host] [-p port] [-U user]");
35
36 try {
37 ExecutorService es = Executors.newCachedThreadPool();
38
39 // Get a Properties object
40 Properties props = System.getProperties();
41
42 props.setProperty("mail.imap.usesocketchannels", "true");
43 props.setProperty("mail.imaps.usesocketchannels", "true");
44 props
45 .setProperty("mail.session.mail.imap.user",
46 "test@imap.gmail.com");
47 props.setProperty("mail.session.mail.store.protocol","imap");
48 props.setProperty("mail.store.protocol","imap");
49 props.put("mail.imap.socketFactory.fallback", "true");
50 props.setProperty("mail.event.scope", "application");
51 props.put("mail.event.executor", es);
52
53
54 Session session = Session.getDefaultInstance(props, null);
55 Store store = session.getStore("imap");
56 store.connect(host, port, user, password);
57
58
59
60 session.setDebug(debug);
61
62 final IdleManager im = new IdleManager(session, es);
63
64
65 // Get a Store object
66 // Store store = null;
67 if (url != null) {
68 // URLName urln = new URLName(url);
69
70
71 URLName urln = new URLName("imaps", "gmail.com", port, "",
72 user, password);
73
74 } else {
75 if (protocol != null)
76 store = session.getStore(protocol);
77 else
78 store = session.getStore();
79
80 // Connect
81 if (host != null || user != null || password != null)
82 store.connect(host, port, user, password);
83 else
84 store.connect();
85 }
86
87 // List<Folder> folders = new ArrayList<Folder>();
88
89 IMAPFolder folder = (IMAPFolder) store.getFolder("inbox");
90 ;
91 System.out.println(" folder open " + folder.isOpen());
92 AlertManager mngr = new AlertManager();
93
94 for (;;) {
95
96 System.out.flush();
97 // Open a Folder
98 if(!folder.isOpen()) {
99 folder.open(READ_ONLY);
100 System.out.println(" folder open " + folder.isOpen());
101 }
102 int messageCount = folder.getMessageCount();
103
104 try {
105
106 if (folder == null || !folder.exists()) {
107 System.out.println("Invalid folder");
108 continue;
109 }
110
111 if (folder.isOpen()) {
112 im.watch(folder);
113 continue;
114 }
115
116 }catch(FolderClosedException ex){
117 System.out.print( ex.getMessage());
118 }
119
120 // folders.add(folder);
121 // Add messageCountListener to listen for new messages
122 folder.addMessageCountListener(new MessageCountAdapter() {
123 public void messagesAdded(MessageCountEvent ev) {
124 Folder folder = (Folder) ev.getSource();
125 Message[] msgs = ev.getMessages();
126 System.out.println("Folder: " + folder +
127 " got " + msgs.length + " new messages");
128
129 // Just dump out the new messages
130 for (int i = 0; i < msgs.length; i++) {
131 try {
132 Message = "";
133 System.out.println("-----");
134 System.out.println("Message Subject " +
135 msgs[i].getSubject());
136 System.out.println("Message sender num " +
137 msgs[i].getFrom().length);
138 System.out.println("Message sent date " +
139 msgs[i].getSentDate());
140
141 String to_remove="Title: ";
142 String subject = msgs[i].getSubject().replace(to_remove, "");
143 System.out.println("subject: " + subject);
144
145 String message = subject + "@" + String.valueOf(msgs[i].getSentDate().getTime());
146 producer.queue.add(message);
147
148
149 im.watch(folder);
150
151 } catch (MessagingException mex) {
152 mex.printStackTrace();
153 }
154 }
155 }
156 });
157 im.watch(folder);
158 }
159
160
161 } catch (Exception ex) {
162 ex.printStackTrace();
163 }
164}
165}