IMAP


In [ ]:
import email
import getpass
import imaplib

In [ ]:
domain = input()
ssl = True
port = 993
login = input()
password = getpass.getpass()

In [ ]:
if ssl:
    imap = imaplib.IMAP4_SSL(domain, port)
else:
    imap = imaplib.IMAP4(domain, port)
status, response = imap.login(login, password)
print(status)
[r.decode() for r in response]

In [ ]:
status, namespace = imap.namespace()
print(status)
[n.decode() for n in namespace]

In [ ]:
status, folders = imap.list()
print(status)
[f.decode() for f in folders]

In [ ]:
status, response = imap.select() # nothing or str
print(status)
[r.decode() for r in response]

In [ ]:
status, data = imap.search(None, 'ALL')
print(status)
message_ids = data[0].split()
[r.decode() for r in message_ids]

In [ ]:
status, data = imap.fetch('1,2,3', '(ENVELOPE)')
print(status, len(data))
print(type(data[0]) is bytes)
print(type(data[0]) is tuple)

In [ ]:
status, data = imap.fetch('1,2,3', '(RFC822)')
print(status, len(data))
print(type(data[0]) is bytes)
print(type(data[0]) is tuple)

In [ ]:
messages = []
for message_id in message_ids:
    status, data = imap.fetch(message_id, '(RFC822)')
    print(status, data[0][0])
    if status != 'OK':
        raise RuntimeError('status was "{}"'.format(status))
    message = email.message_from_bytes(data[0][1])
    messages.append(message)
len(messages)

In [ ]:
status, response = imap.close()
print(status)
[r.decode() for r in response]

In [ ]:
status, response = imap.logout()
print(status)
[r.decode() for r in response]