-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpygmail.py
More file actions
executable file
·58 lines (39 loc) · 1.47 KB
/
pygmail.py
File metadata and controls
executable file
·58 lines (39 loc) · 1.47 KB
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
import re
import imaplib, smtplib
import email
from email.message import *
from datetime import *
import quopri # for MIME encoding/decoding
class pygmail:
def __init__(self):
self.IMAP_SERVER='imap.gmail.com'
self.IMAP_PORT=993
self.M = None
self.response = None
self.mailboxes = []
self.user_email = None
# =============== AUTHENTICATION =============== #
def login(self, username, password):
self.user_email = username
# Start IMAP Session
self.M = imaplib.IMAP4_SSL(self.IMAP_SERVER, self.IMAP_PORT)
rc, self.response = self.M.login(username, password)
return rc
def logout(self):
self.M.logout()
# =============== MESSAGES =============== #
# get all unread messages in this mailbox
# returns list of Python Email Message objects
def fetchUnreadMessages(self, folder):
messages = []
self.M.select(folder, readonly=True)
result, data = self.M.uid('search', None, 'UNSEEN')
uid_list = data[0].split()
for i in range(len(uid_list)):
email_uid = uid_list[i]
res, dat = self.M.uid('fetch', email_uid, '(RFC822)')
raw_email = dat[0][1]
msg = email.message_from_string(raw_email)
messages.append(msg)
messages.reverse() # to put most recent first
return messages