Python - IMAP

  • 简述

    IMAP 是一种电子邮件检索协议,它不会下载电子邮件。它只是读取它们并显示它们。这在低带宽条件下非常有用。Python的客户端库称为imaplib用于通过 imap 协议访问电子邮件。
    IMAP代表Internet Mail Access Protocol.它于 1986 年首次提出。
    Key Points:
    • IMAP 允许客户端程序在服务器上操作电子邮件消息,而无需将它们下载到本地计算机上。
    • 电子邮件由远程服务器保存和维护。
    • 它使我们能够在不阅读邮件的情况下采取任何操作,例如下载、删除邮件。它使我们能够创建、操作和删除称为邮箱的远程邮件文件夹。
    • IMAP 使用户能够搜索电子邮件。
    • 它允许同时访问多个邮件服务器上的多个邮箱。

    IMAP 命令

    下表描述了一些 IMAP 命令:
    序列号 命令说明
    1 IMAP_LOGIN
    2 CAPABILITY此命令请求列出服务器支持的功能。
    3 NOOP此命令用作在不活动期间定期轮询新消息或消息状态更新。
    4 SELECT此命令有助于选择一个邮箱来访问邮件。
    5 EXAMINE除了不允许更改邮箱外,它与 SELECT 命令相同。
    6 CREATE它用于创建具有指定名称的邮箱。
    7 DELETE它用于永久删除具有给定名称的邮箱。
    8 RENAME它用于更改邮箱的名称。
    9 LOGOUT此命令通知服务器客户端已完成会话。服务器必须在 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()
    
    根据邮箱配置,会显示邮件。