All Courses

Python - IMAP

Neha Kumawat

3 years ago

IMAP is an email retrieval protocol which does not download the emails. It just reads them and displays them. This is very useful in low bandwidth condition. Python’s client side library called imaplib is used for accessing emails over imap protocol.
IMAP stands for Internet Mail Access Protocol. It was first proposed in 1986.
Key Points:
  • IMAP allows the client program to manipulate the e-mail message on the server without downloading them on the local computer.
IMAP allows the client program to manipulate the e-mail message on the server without downloading them on the local computer.
  • The e-mail is hold and maintained by the remote server.
The e-mail is hold and maintained by the remote server.
  • It enables us to take any action such as downloading, delete the mail without reading the mail.It enables us to create, manipulate and delete remote message folders called mail boxes.
It enables us to take any action such as downloading, delete the mail without reading the mail.It enables us to create, manipulate and delete remote message folders called mail boxes.
  • IMAP enables the users to search the e-mails.
IMAP enables the users to search the e-mails.
  • It allows concurrent access to multiple mailboxes on multiple mail servers.
It allows concurrent access to multiple mailboxes on multiple mail servers.

IMAP Commands

The following table describes some of the IMAP commands:

Example

In the below example we login to a gmail server with user credentials. Then we choose to display the messages in the inbox. A for loop is used to display the fetched messages one by one and finally the connection is closed.

import imaplib
import pprint

imap_host = 'imap.gmail.com'
imap_user = 'username@gmail.com'
imap_pass = 'password'

# connect to host using SSL
imap = imaplib.IMAP4_SSL(imap_host)

## login to server
imap.login(imap_user, imap_pass)

imap.select('Inbox')

tmp, data = imap.search(None, 'ALL')
for num in data[0].split():
	tmp, data = imap.fetch(num, '(RFC822)')
	print('Message: {0}\n'.format(num))
	pprint.pprint(data[0][1])
	break
imap.close()
Depending on the mail box configuration, mail is displayed.

Submit Review