Python - IMAP

IMAP(Internet Message Access Protocol)以前称作交互邮件访问协议(Interactive Mail Access Protocol),是一个应用层协议。IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。

IMAP 是一种不下载电子邮件的电子邮件检索协议。 它只是读取它们并显示它们。 这在低带宽条件下非常有用。 名为 imaplib 的 Python 客户端库用于通过 imap 协议访问电子邮件。

要点:

  • IMAP 允许客户端程序操作服务器上的电子邮件消息,而无需将它们下载到本地计算机上。

  • 电子邮件由远程服务器保存和维护。

  • 它使我们能够在不阅读邮件的情况下执行任何操作,例如下载、删除邮件。它使我们能够创建、操作和删除称为邮箱的远程邮件文件夹。

  • IMAP 使用户能够搜索电子邮件。

  • 它允许同时访问多个邮件服务器上的多个邮箱。

IMAP 命令

下表描述了一些 IMAP 命令:

S.N.命令说明
1IMAP_LOGIN
此命令打开连接。
2CAPABILITY
此命令请求列出服务器支持的功能。
3NOOP
此命令用作在不活动期间定期轮询新消息或消息状态更新。
4SELECT
此命令有助于选择一个邮箱来访问消息。
5EXAMINE
除了不允许更改邮箱外,它与 SELECT 命令相同。
6CREATE
它用于创建具有指定名称的邮箱。
7DELETE
它用于永久删除具有给定名称的邮箱。
8RENAME
它用于更改邮箱的名称。
9LOGOUT
此命令通知服务器客户端已完成会话。 服务器必须在 OK 响应之前发送 BYE untagged 响应,然后关闭网络连接。

示例

在下面的示例中,我们使用用户凭据登录到 gmail 服务器。 然后我们选择在收件箱中显示消息。 for循环用于将获取的消息一条一条地显示,最后关闭连接。

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()

根据邮箱配置,显示邮件。