· 9 years ago · Oct 26, 2016, 03:52 AM
1import os
2import sys
3import email
4import imaplib
5from datetime import datetime
6from getpass import getpass
7
8detach_dir = 'C:PyDir\'
9
10def log_data():
11 mailboxes = ['@yandex.ru', "@gmail.com", "@mail.ru"]
12 servers = ['yandex.ru', 'gmail.com', 'mail.ru']
13 srv = ''
14
15 login = input("Enter your email: ")
16 for lgt in range(len(mailboxes)):
17 if mailboxes[lgt] in login:
18 srv = servers[lgt]
19 break
20 return login, srv
21
22
23def mailbox_proc(mail):
24 login, srv = log_data()
25
26 mail.select("INBOX")
27 rv, mdata = mail.search(None, "UNSEEN")
28 if rv != 'OK':
29 print("No message found")
30 return
31
32 for i in mdata[0].split():
33 rv, mdata = mail.fetch(i, '(RFC822)')
34 if rv != 'OK':
35 print("Error fetching mail")
36 return
37
38 msg = email.message_from_bytes(mdata[0][1])
39 subj = str(email.header.make_header(email.header.decode_header(msg['Subject'])))
40
41 if msgs.is_multipart():
42 for part in msg.walk():
43 fname = part.get_filename() or part.get_param('filename')
44 fl = open(fname, 'wb')
45 fl.write(part.get_payload(decode=True))
46 fl.close()
47
48 try:
49 print('Message %s: %s' % (i, subj))
50 except UnicodeEncodeError:
51 print('Message', i, ': <UNABLE TO DECODE HEADER>')
52
53 print('Raw Date:', msg['Date'])
54
55 # print('n', mdata[0][1])
56 print('_____________________________n')
57 date_t = email.utils.parsedate_tz(msg['Date'])
58 if date_t:
59 loc_date = datetime.fromtimestamp(email.utils.mktime_tz(date_t))
60 print('Local Date: ', loc_date.strftime("%a, %d %b %Y %H:%M:%S"))
61
62
63try:
64
65 print("Enter email: " + log_data()[0])
66
67 M = imaplib.IMAP4_SSL('imap.' + log_data()[1], 993)
68
69 try:
70 rv, data = M.login(log_data()[0], getpass("Enter password: "))
71 except imaplib.IMAP4.error:
72 print("nimaplib.IMAP4.error: Authorization failed")
73 sys.exit(1)
74 print("n")
75 print(rv, data)
76
77 if rv == 'OK':
78 print("Processing mailbox...n")
79 mailbox_proc(M)
80 M.close()
81 else:
82 print("Error: Cannot open mailbox ", rv)
83
84 M.logout()
85
86
87except KeyboardInterrupt:
88 quit()
89finally:
90 input("Press any key.....")