- Python Network Programming - Home
- Python Network Introduction
- Python Networking - Environment Setup
- Python Networking - Internet Protocol
- Python Networking - IP Address
- Python Networking - DNS Lookup
- Python Networking - Routing
- Python Networking - HTTP Requests
- Python Networking - HTTP Response
- Python Networking - HTTP Headers
- Python Networking - Custom HTTP Requests
- Python Networking - Request Status Codes
- Python Networking - HTTP Authentication
- Python Networking - HTTP Data Download
- Python Networking - Connection Re-use
- Python Networking - Network Interface
- Python Networking - Sockets Programming
- Python Networking - HTTP Client
- Python Networking - HTTP Server
- Python Networking - Building URLs
- Python Networking - WebForm Submission
- Python Networking - Databases and SQL
- Python Networking - Telnet
- Python Networking - Email Messages
- Python Networking - SMTP
- Python Networking - POP3
- Python Networking - IMAP
- Python Networking - SSH
- Python Networking - FTP
- Python Networking - SFTP
- Python Networking - Web Servers
- Python Networking - Uploading Data
- Python Networking - Proxy Server
- Python Networking - Directory Listing
- Python Networking - Remote Procedure Call
- Python Networking - RPC JSON Server
- Python Networking - Google Maps
- Python Networking - RSS Feed
Python Network Programming Resources
Python Network - IMAP
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. Pythons 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.
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.
IMAP enables the users to search the e-mails.
It allows concurrent access to multiple mailboxes on multiple mail servers.
IMAP Commands
The following table describes some of the IMAP commands:
| S.N. | Command Description |
|---|---|
| 1 | IMAP_LOGIN This command opens the connection. |
| 2 | CAPABILITY This command requests for listing the capabilities that the server supports. |
| 3 | NOOP This command is used as a periodic poll for new messages or message status updates during a period of inactivity. |
| 4 | SELECT This command helps to select a mailbox to access the messages. |
| 5 | EXAMINE It is same as SELECT command except no change to the mailbox is permitted. |
| 6 | CREATE It is used to create mailbox with a specified name. |
| 7 | DELETE It is used to permanently delete a mailbox with a given name. |
| 8 | RENAME It is used to change the name of a mailbox. |
| 9 | LOGOUT This command informs the server that client is done with the session. The server must send BYE untagged response before the OK response and then close the network connection. |
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.
main.py
import imaplib import pprint imap_host = 'imap.gmail.com' imap_user = '[email protected]' 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.