gpt4 book ai didi

python - maildir 消息的文件名 - mailbox.Maildir

转载 作者:行者123 更新时间:2023-11-28 22:56:44 24 4
gpt4 key购买 nike

我如何安全地,并希望使用 Maildir 的标准 python 工具,找到 Maildir 消息的完整文件名和路径。我想在删除之前将邮件消息文件写入 tarfile。

我正在导入邮箱和 tarfile (++)

上下文:

Maildirs 列表(从文本文件创建)

遍历 Maildirs(简化),创建要删除的邮件列表,一个函数将获取邮件列表,一个接一个,将电子邮件附加到 tarfile,然后删除电子邮件。

import mailbox
# Creating the list
for maildir in maildir_list
inbox = mailbox.Maildir(maildir, factory=None, create=False)
# Looping over folders, if (folder = Trash)
for key,msg in inbox.iteritems():
my_list.append(maildir, inbox, key, foldername

然后遍历列表以将邮件附加到 tarfile 并删除(丢弃)它们。

    import tarfile,mailbox
# _box is allready initialized in the previous function
for _maildir, _box, _key, _foldername in __my_list:
__msg = _box[_key]
__subdir = __msg.get_subdir()
__suffix = mailbox.Maildir.colon + __msg.get_info()
if __suffix == mailbox.Maildir.colon:
__suffix = ''
__file_name = "%s/.%s/%s/%s%s" % ( _maildir, _foldername, __subdir, _key, __suffix )

try:
tar.add(__file_name)
_box.discard(_key)
except Exception as inst:
error_type = type(inst)
log_text = "%s\: ERROR %s - %s" % (error_type, __file_name, inst)
log_this( logKeySub, log_text )
e.write(log_text + "\n")

我查看了邮箱和电子邮件的 python 文档,搜索了 google、stackoverflow 等。现在我正在求助于使用 _maildir、_foldername、_key 和 get_info() 构建路径和文件名。

编辑:根据 t-8ch 的评论,我进行了此调整:

for _maildir, _box, _key, _foldername in __my_list:
try:
__file = _box._toc[_key]
__file_name = "%s/.%s/%s" % ( _maildir, _foldername, __file )
except Exception as inst:
error_type = type(inst) # Type Exception, inst.args, inst
log_text = "%s\: ERROR with %s/.%s - %s - %s" % (error_type, _maildir, _foldername, _key, inst)
log_this( logKeySub, log_text )
e.write(log_text + "\n")
continue

空运行证明它工作得非常好。

最佳答案

您可以使用 Maildir._toc。这是一个字典,将邮件的键映射到相应文件的路径。这个字典是在 Maildir._refresh() 中构建的。这允许仅按需延迟读取邮件文件,从而减少刷新所有邮件列表的时间(这种情况经常发生)。

(我确实在源代码中找到了这个)

关于python - maildir 消息的文件名 - mailbox.Maildir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15093161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com