第十二章:email-mailbox:管理email归档-Maildir-消息标志

13.3.3 消息标志
邮箱中的消息有一些标志,可以用来跟踪消息是否已读、是否被标记为重要消息或者是否被标记为以后要删除等方面。这些标志被存储为一个特定于格式的字母编码序列,Message类提供了一些方法来获取和改变这些标志的值。下面这个例子在增加标志来指示消息很重要之前,首先显示Example Maildir中消息的标志。

import mailbox

print('Before:')
mbox = mailbox.Maildir('Example')
mbox.lock()
try:
    for message_id,message in mbox.iteritems():
        print('{:6} "{}"'.format(message.get_flags(),
                                 message['subject']))
        message.add_flag('F')
        # Tell the mailbox to update the message.
        mbox[message_id] = message
finally:
    mbox.flush()
    mbox.close()

print('\nAfter:')
mbox = mailbox.Maildir('Example')
for message in mbox:
    print('{:6} "{}"'.format(message.get_flags(),
                             message['subject']))

默认地,消息没有标志,增加一个标志会改变内存中的消息,不过不会更新磁盘上的消息。要更新磁盘上的消息,可以使用现有的标识符把消息对象存储在邮箱里。
在这里插入图片描述
用add_flag()增加标志会保留所有现有的标志。使用set_flags()则会覆盖现有的标志集,把它替换为传递给这个方法的新值。

import mailbox

print('Before:')
mbox = mailbox.Maildir('Example')
mbox.lock()
try:
    for message_id,message in mbox.iteritems():
        print('{:6} "{}"'.format(message.get_flags(),
                                 message['subject']))
        message.add_flag('S')
        # Tell the mailbox to update the message.
        mbox[message_id] = message
finally:
    mbox.flush()
    mbox.close()

print('\nAfter:')
mbox = mailbox.Maildir('Example')
for message in mbox:
    print('{:6} "{}"'.format(message.get_flags(),
                             message['subject']))

在这个例子中,当set_flags()把标志替换为S时,上例增加的F标志就丢失了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值