Reads late emails from IMAP server and displays them in the Window :param window: window to display emails in :return:
(window)
| 70 | |
| 71 | |
| 72 | def read_mail(window): |
| 73 | """ |
| 74 | Reads late emails from IMAP server and displays them in the Window |
| 75 | :param window: window to display emails in |
| 76 | :return: |
| 77 | """ |
| 78 | mail = imaplib.IMAP4_SSL(IMAP_SERVER) |
| 79 | |
| 80 | (retcode, capabilities) = mail.login(LOGIN_EMAIL, LOGIN_PASSWORD) |
| 81 | mail.list() |
| 82 | typ, data = mail.select('Inbox') |
| 83 | n = 0 |
| 84 | now = datetime.now() |
| 85 | # get messages from today |
| 86 | search_string = '(SENTON {}-{}-{})'.format(now.day, |
| 87 | calendar.month_abbr[now.month], now.year) |
| 88 | (retcode, messages) = mail.search(None, search_string) |
| 89 | if retcode == 'OK': |
| 90 | # message numbers are separated by spaces, turn into list |
| 91 | msg_list = messages[0].split() |
| 92 | msg_list.sort(reverse=True) # sort messages descending |
| 93 | for n, message in enumerate(msg_list): |
| 94 | if n >= MAX_EMAILS: |
| 95 | break |
| 96 | |
| 97 | from_elem = window['{}from'.format(n)] |
| 98 | date_elem = window['{}date'.format(n)] |
| 99 | from_elem.update('') # erase them so you know they're changing |
| 100 | date_elem.update('') |
| 101 | window.refresh() |
| 102 | |
| 103 | typ, data = mail.fetch(message, '(RFC822)') |
| 104 | for response_part in data: |
| 105 | if isinstance(response_part, tuple): |
| 106 | |
| 107 | original = email.message_from_bytes(response_part[1]) |
| 108 | date_str = original['Date'][:22] |
| 109 | |
| 110 | from_elem.update(original['From']) |
| 111 | date_elem.update(date_str) |
| 112 | window.refresh() # make the window changes show up right away |
| 113 | |
| 114 | |
| 115 | red_x = "R0lGODlhEAAQAPeQAIsAAI0AAI4AAI8AAJIAAJUAAJQCApkAAJoAAJ4AAJkJCaAAAKYAAKcAAKcCAKcDA6cGAKgAAKsAAKsCAKwAAK0AAK8AAK4CAK8DAqUJAKULAKwLALAAALEAALIAALMAALMDALQAALUAALYAALcEALoAALsAALsCALwAAL8AALkJAL4NAL8NAKoTAKwbAbEQALMVAL0QAL0RAKsREaodHbkQELMsALg2ALk3ALs+ALE2FbgpKbA1Nbc1Nb44N8AAAMIWAMsvAMUgDMcxAKVABb9NBbVJErFYEq1iMrtoMr5kP8BKAMFLAMxKANBBANFCANJFANFEB9JKAMFcANFZANZcANpfAMJUEMZVEc5hAM5pAMluBdRsANR8AM9YOrdERMpIQs1UVMR5WNt8X8VgYMdlZcxtYtx4YNF/btp9eraNf9qXXNCCZsyLeNSLd8SSecySf82kd9qqc9uBgdyBgd+EhN6JgtSIiNuJieGHhOGLg+GKhOKamty1ste4sNO+ueenp+inp+HHrebGrefKuOPTzejWzera1O7b1vLb2/bl4vTu7fbw7ffx7vnz8f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJAALAAAAAAQABAAAAjUACEJHEiwYEEABniQKfNFgQCDkATQwAMokEU+PQgUFDAjjR09e/LUmUNnh8aBCcCgUeRmzBkzie6EeQBAoAAMXuA8ciRGCaJHfXzUMCAQgYooWN48anTokR8dQk4sELggBhQrU9Q8evSHiJQgLCIIfMDCSZUjhbYuQkLFCRAMAiOQGGLE0CNBcZYmaRIDLqQFGF60eTRoSxc5jwjhACFWIAgMLtgUocJFy5orL0IQRHAiQgsbRZYswbEhBIiCCH6EiJAhAwQMKU5DjHCi9gnZEHMTDAgAOw==" |