Python-IMAP


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

IMAP代表互联网邮件访问协议。它于1986年首次提出。

关键点:

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

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

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

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

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

IMAP 命令

下表描述了一些 IMAP 命令:

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

例子

在下面的示例中,我们使用用户凭据登录 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()

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