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
|
import sys
import imaplib, email
def get_imap(server, username, password):
'''Connect and login via IMAP'''
try:
mail = imaplib.IMAP4_SSL(server)
mail.login(username, password)
return mail
except Exception as e:
sys.stderr.write("Error connecting to %s@%s: %s\n\n" % (username, server, str(e)))
return None
def get_mail_uids(mail):
'''Return a list of message UIDs in the inbox'''
if mail is None:
return []
mail.select("inbox") # connect to inbox.
result, data = mail.uid('search', None, "ALL") # search and return uids instead
return data[0].split()
def get_message(mail, uid):
'''Get a single email message object by UID'''
if mail is None:
return None
result, data = mail.uid('fetch', uid, '(RFC822)')
if result == 'OK':
dat0 = data[0]
if dat0 is None:
return None
else:
raw_email = dat0[1]
return email.message_from_bytes(raw_email)
else:
raise Exception("Bad response from server: %s" % (result))
def delete_message(mail, uid):
if mail is None:
return
result = mail.uid('store', uid, '+FLAGS', '(\Deleted)')
def close(mail):
if mail is None:
return
mail.expunge()
mail.close()
mail.logout()
|