Example of reading email from Gmail / Office 365 by IMAP using Python



import sys
import imaplib
import getpass
import email
import email.header
import datetime

EMAIL_ACCOUNT = "noreply@goyun.info"
EMAIL_FOLDER = "INBOX"


def process_mailbox(M):
"""
Do something with emails messages in the folder.
For the sake of this example, print some headers.
"""

rv, data = M.search(None, "ALL")
if rv != 'OK':
print "No messages found!"
return

for num in data[0].split():
rv, data = M.fetch(num, '(RFC822)')
if rv != 'OK':
print "ERROR getting message", num
return

msg = email.message_from_string(data[0][1])
decode = email.header.decode_header(msg['Subject'])[0]
subject = unicode(decode[0], 'utf-8')
print 'Message %s: %s' % (num, subject)
print 'Raw Date:', msg['Date']
# Now convert to local date-time
date_tuple = email.utils.parsedate_tz(msg['Date'])
if date_tuple:
local_date = datetime.datetime.fromtimestamp(
email.utils.mktime_tz(date_tuple))
print "Local Date:", \
local_date.strftime("%a, %d %b %Y %H:%M:%S")


M = imaplib.IMAP4_SSL('imap.gmail.com')
#M= imaplib.IMAP4_SSL('outlook.office365.com')
try:
rv, data = M.login(EMAIL_ACCOUNT, getpass.getpass())
except imaplib.IMAP4.error:
print "LOGIN FAILED!!! "
sys.exit(1)

print rv, data

rv, mailboxes = M.list()
if rv == 'OK':
print "Mailboxes:"
print mailboxes

rv, data = M.select(EMAIL_FOLDER)
if rv == 'OK':
print "Processing mailbox...\n"
process_mailbox(M)
M.close()
else:
print "ERROR: Unable to open mailbox ", rv

M.logout()

More about IMAP

Comments

Popular posts from this blog

Check MySQL query history from command line

Installing chocolatey on Windows