Uses 557K of libraries. Click here for Pure Java version (33094L/209K).
1 | !7 |
2 | |
3 | sclass LatestGMails extends DynObjectTable<Map> {
|
4 | int numMsgs = 50; |
5 | |
6 | start {
|
7 | ownTimer(doEvery(dm_osLoading() ? 10.0 : 0.0, 60.0, r calc)); |
8 | itemToMap = f_id(); |
9 | } |
10 | |
11 | visualize {
|
12 | JComponent c = super.visualize(); |
13 | tablePopupMenuItemsThreaded(table, |
14 | "Show mail (source code)", r {
|
15 | temp WithAutoCloseable<O> content = selectedMailContent(); |
16 | S text = javaMail_messageContentToText(content!); |
17 | if (text!= null) showText("Mail " + selectedMailUID(), text);
|
18 | }, |
19 | "Show mail (HTML)", r {
|
20 | temp WithAutoCloseable<O> content = selectedMailContent(); |
21 | print("Content class: " + className(content!));
|
22 | S text = javaMail_messageContentToText(content!); |
23 | if (text != null) showFrame("Mail " + selectedMailUID(), jHTMLEditorPane(trim(text)));
|
24 | }, |
25 | "Reply...", r {
|
26 | S replyModule = dm_makeNewModule("#1016474/GMailSendForm");
|
27 | dm_setModule(replyModule, data := litorderedmap( |
28 | "To:" := selectedTableCell(table, "From"), |
29 | "Subject:" := addReToMailSubject((S) selectedTableCell(table, "Subject")))); |
30 | dm_showModule(replyModule); |
31 | }); |
32 | |
33 | ret c; |
34 | } |
35 | |
36 | long selectedMailUID() {
|
37 | ret parseLong((S) selectedTableCell(table, "UID")); |
38 | } |
39 | |
40 | WithAutoCloseable<O> selectedMailContent() ctex {
|
41 | long uid = selectedMailUID(); |
42 | if (uid == 0) null; |
43 | Folder inbox = googleCode_gmail_inbox(); |
44 | AutoCloseable temp = tempMailStore(inbox); |
45 | inbox.open(Folder.READ_ONLY); |
46 | |
47 | IMAPMessage msg = cast ((UIDFolder) inbox).getMessageByUID(uid); |
48 | //print("Message mime type: " + msg.getMimeType();
|
49 | ret WithAutoCloseable(temp, msg.getContent()); |
50 | } |
51 | |
52 | void calc() ctex {
|
53 | temp enter(); |
54 | if (dm_osShuttingDown()) ret; |
55 | long startTime = sysNow(); |
56 | Folder inbox = googleCode_gmail_inbox(); |
57 | temp tempMailStore(inbox); |
58 | new L<Map> l; |
59 | inbox.open(Folder.READ_ONLY); |
60 | |
61 | int count = inbox.getMessageCount(); |
62 | int n = max(1, count-numMsgs+1); |
63 | Message[] messages = inbox.getMessages(n, count); |
64 | |
65 | print("Fetching " + n2(messages, "message"));
|
66 | inbox.fetch(messages, javaMail_fullFetchProfile()); |
67 | |
68 | int i = 1; |
69 | for (Message _msg : reversed(messages)) {
|
70 | new LinkedHashMap map; |
71 | //print("Loading message " + i++);
|
72 | IMAPMessage msg = cast _msg; |
73 | map.put("From", InternetAddress.toString(msg.getFrom()));
|
74 | map.put("Subject", msg.getSubject());
|
75 | //map.put("Message number: " + msg.getMessageNumber());
|
76 | map.put("Sent/Received", msg.getSentDate() + "/" + msg.getReceivedDate());
|
77 | //O content = msg.getContent(); |
78 | //print(" Content type: " + getClassName(content));
|
79 | map.put("Size", toK(msg.getSize()) + " K");
|
80 | map.put("[hidden] ID", msg.getMessageID());
|
81 | pcall { map.put("UID", ((UIDFolder) inbox).getUID(msg)); }
|
82 | //map.put("Content Type", className(content) + " / " + msg.getContentType());
|
83 | map.put("Content Type", msg.getContentType());
|
84 | //print(" Content type: " + msg.getContentType());
|
85 | l.add(map); |
86 | } |
87 | //inbox.close(false); |
88 | //inbox.getStore().close(); |
89 | print("Fetching " + n2(l, " latest GMail") + " took: " + elapsedTime(startTime) + " ms");
|
90 | S oldLatest = latestMessageID(); |
91 | setData(l); |
92 | if (nempty(oldLatest)) {
|
93 | S latest = latestMessageID(); |
94 | if (neq(oldLatest, latest)) |
95 | onClick(infoBoxPanel("New GMail from " + getString(first(l), "From") + "!"), rThread dm_toFront);
|
96 | } |
97 | } |
98 | |
99 | S latestMessageID() {
|
100 | ret getString(first(data), "[hidden] ID"); |
101 | } |
102 | } |
Began life as a copy of #1016632
download show line numbers debug dex old transpilations
Travelled to 12 computer(s): bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1019024 |
| Snippet name: | Latest GMails v4 [Dyn Module] - apparently protocol has been disabled by Google? |
| Eternal ID of this version: | #1019024/19 |
| Text MD5: | 6d0d1a40110b8ff884a91a5a8eeb8f80 |
| Transpilation MD5: | 953e528f99a32eadac8d946a77a81bc7 |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX source code (Dynamic Module) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2023-03-01 19:26:44 |
| Source code size: | 3674 bytes / 102 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 610 / 8259 |
| Version history: | 18 change(s) |
| Referenced in: | [show references] |