第十二章:email-mailbox:管理email归档-imaplib:IMAP4客户库-列出邮箱

博客介绍了使用list()方法获取账户可用邮箱的相关内容。该方法返回包含响应码和服务器数据的元组,响应码通常为OK。其数据是字符串序列,可使用re或csv键划分。若邮箱名含空格,后续使用需去掉引号,还可通过参数指定层次结构中的邮箱。

13.4.4 列出邮箱
要获取一个账户的可用邮箱,可以使用list()方法。

import imaplib
from pprint import pprint
from imaplib_connect import open_connection

with open_connection() as c:
    typ,data = c.list()
    print('Response code:',typ)
    print('Response:')
    pprint(data)

返回值是一个tuple,其中包含一个响应码,以及由服务器返回的数据。响应码为OK,除非出现错误。list()的数据是一个字符串序列,其中包含标志、层次结构定界符和每个邮箱的邮箱名。

可以使用re或csv键各个响应串划分为3个部分。

import imaplib
import re

from imaplib_connect import open_connection

list_response_pattern = re.compile(
    r'\((?P<flags>.*?)\) "(?P<delimiter>.*)" (?P<name>.*)'
    )

def parse_list_response(line):
    match = list_response_pattern.match(line.decode('utf-8'))
    flags,delimiter,mailbox_name = match.groups()
    mailbox_name = mailbox_name.strip('"')
    return (flags,delimiter,mailbox_name)
with open_connection() as c:
    typ,data = c.list()
print('Response code:',typ)

for line in data:
    print('Server response:',line)
    flags,delimiter,mailbox_name = parse_list_response(line)
    print('Parsed response:',(flags,delimiter,mailbox_name))

如果邮箱名包含空格,那么服务器会对邮箱名加引号,不过以后在对服务器的其他调用中使用邮箱名时需要将这些引号去掉。

list()有一些参数可以指定层次结构中的邮箱。例如,要列出Example中的子文件夹,需要传入"Example"作为directory参数。

import imaplib

from imaplib_connect import open_connection

with open_connection() as c:
    trp,data = c.list(directory='Example')

print('Response_code:',typ)

for line in data:
    print('Server response:',line)

这会返回父文件夹和子文件夹。

或者,要列出与一个模式匹配的文件夹,需要传入pattern参数。

import imaplib

from imaplib_connect import open_connection

with open_connection() as c:
    typ,data = c.list(pattern-'*Example*')

print('Response code:',typ)

for line in data:
    print('Server response:',line)

在这种情况下,Example和Example.2016都会包含在响应中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值