Python Network Programming 简明教程
Python - IMAP
IMAP 是一种不会下载电子邮件的电子邮件检索协议。它只是读取并显示电子邮件。这在小带宽条件下非常有用。Python 的名为 imaplib 的客户端库用于通过 IMAP 协议访问电子邮件。
IMAP 代表 Internet Mail Access Protocol. ,它最早在 1986 年提出。
Key Points:
-
IMAP 允许客户端程序在服务器上操作电子邮件消息,而不将其下载到本地计算机。
-
电子邮件由远程服务器保存和维护。
-
它使我们能够采取任何操作,例如在不阅读邮件的情况下下载、删除邮件。它使用户能够创建、操作和删除称为邮箱的远程邮件文件夹。
-
IMAP 使用户能够搜索电子邮件。
-
它允许并发访问多个邮箱服务器上的多个邮箱。
IMAP Commands
下表描述了一些 IMAP 命令:
S.N. |
Command Description |
1 |
IMAP_LOGIN 此命令打开连接。 |
2 |
CAPABILITY 此命令请求列出服务器支持的功能。 |
3 |
NOOP 此命令用作在非活动期间定期轮询新消息或消息状态更新。 |
4 |
SELECT 此命令有助于选择邮箱以访问邮件。 |
5 |
EXAMINE 它与 SELECT 命令相同,只不过不允许更改邮箱。 |
6 |
CREATE 它用于使用指定名称创建邮箱。 |
7 |
DELETE 它用于永久删除具有指定名称的邮箱。 |
8 |
RENAME 它用于更改邮箱名称。 |
9 |
LOGOUT 此命令通知服务器客户端已完成该会话。服务器必须在 OK 响应之前发送 BYE 未标记响应,然后关闭网络连接。 |
Example
在以下示例中,我们使用用户凭证登录到 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()
根据邮箱配置,显示邮件。