-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgmail_csv.py
84 lines (59 loc) · 2.1 KB
/
gmail_csv.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import imaplib
import getpass
class gmail_imap:
def __init__ (self, username, password):
self.imap_server = imaplib.IMAP4_SSL("imap.gmail.com",993)
self.username = username
self.password = password
self.loggedIn = False
self.labels = []
self.messages = Messages(self)
def login (self):
try:
self.imap_server.login(self.username,self.password)
except:
raise Exception, 'Problem loging in'
self.loggedIn = True
def logout (self):
self.imap_server.close()
self.imap_server.logout()
self.loggedIn = False
def get_lables(self):
if(not self.loggedIn):
self.login()
for box in self.imap_server.list()[1]:
name = box.split(' "/" ')[1][1:-1]
if( name != "[Gmail]"): #ignore global [Gmail] mailbox
self.labels.append(name)
def get_csv(self, labels, limit = 2):
out_f = open('out.csv', 'w')
for label in labels:
self.messages.get_msg(label, limit)
for msg in self.messages.messages:
out_f.write(label + ', ' + msg + '\n')
out_f.close()
class Messages:
def __init__(self, server):
self.server = server
self.label = None
self.messages = []
def get_msg(self, label, limit):
typ, data = self.server.imap_server.select(label)
if typ != 'OK':
raise Exception, typ
typ, data = self.server.imap_server.search(None, 'ALL')
msg_lst = data[0].split()[-limit:]
for msg in msg_lst:
typ, data = self.server.imap_server.fetch(msg, '(UID BODY[TEXT])')
self.messages.append(self.__clean_msg(data[0][1]))
def __clean_msg(self, msg):
msg = msg.replace('\r', ' ')
msg = msg.replace('\n', ' ')
msg = msg.replace('\t', ' ')
msg = msg.replace(',', ' ')
return msg
if __name__ == '__main__':
username = '[email protected]'
gmail = gmail_imap(username, getpass.getpass())
gmail.login()
gmail.get_csv(['Links', 'IDSS'])