-
Notifications
You must be signed in to change notification settings - Fork 27
/
IMAP Python Email.py
49 lines (45 loc) · 1.51 KB
/
IMAP Python Email.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
import imaplib, email, os
user = 'your_email'
password = 'your_password'
imap_url = 'imap.gmail.com'
#Where you want your attachments to be saved (ensure this directory exists)
attachment_dir = 'your_attachment_dir'
# sets up the auth
def auth(user,password,imap_url):
con = imaplib.IMAP4_SSL(imap_url)
con.login(user,password)
return con
# extracts the body from the email
def get_body(msg):
if msg.is_multipart():
return get_body(msg.get_payload(0))
else:
return msg.get_payload(None,True)
# allows you to download attachments
def get_attachments(msg):
for part in msg.walk():
if part.get_content_maintype()=='multipart':
continue
if part.get('Content-Disposition') is None:
continue
fileName = part.get_filename()
if bool(fileName):
filePath = os.path.join(attachment_dir, fileName)
with open(filePath,'wb') as f:
f.write(part.get_payload(decode=True))
#search for a particular email
def search(key,value,con):
result, data = con.search(None,key,'"{}"'.format(value))
return data
#extracts emails from byte array
def get_emails(result_bytes):
msgs = []
for num in result_bytes[0].split():
typ, data = con.fetch(num, '(RFC822)')
msgs.append(data)
return msgs
con = auth(user,password,imap_url)
con.select('INBOX')
result, data = con.fetch(b'10','(RFC822)')
raw = email.message_from_bytes(data[0][1])
get_attachments(raw)