2

我正在用 Python 编写一个脚本,用于保存来自 Gmail 的附件,仅来自看不见的电子邮件。为了节省带宽,我想确保每个文件只下载一次。

- 我无法检查我保存它们的文件夹,因为该文件可能已经被删除,然后它不应该再次下载。(脚本访问收件箱只读,因此它不会将电子邮件标记为已读。一旦脚本再次运行,它将再次下载相同的附件,直到电子邮件通过另一个渠道被标记为已读。)

- 现在我将文件名保存到 sqlite 数据库,但有两个问题:我还没有弄清楚下次运行脚本时如何检查数据库中的文件名,而且还有可能在某些时候出现附件以相同的文件名到达,然后不会被下载。

确保我不会多次下载文件的安全且可扩展的方法是什么?

4

3 回答 3

1

Python 中有几个开源项目已经很好地完成了这项任务。为什么不看看OfflineIMAPgetmail的源代码。另外,如果您只是想备份您的 GMail 帐户,我建议您使用其中之一,而不是自己滚动...

于 2011-03-05T14:39:46.880 回答
0

您不仅可以将文件名保存到数据库中,还可以保存,例如,邮件的 Date:-header。(或您确定它们唯一定义邮件的任何标题组合)。

于 2011-03-05T14:24:33.403 回答
0

您可以获取消息的标头,并使用消息的 Date 和/或 Message-Id 标头值来为该消息中的所有附件构造一个“唯一 id 前缀”。然后创建一个形式的密钥[unique_id]_[filename],检查该密钥是否存在于您的数据库或文件系统中。如果没有,请下载该邮件的所有附件,并使用修改后的唯一 ID 密钥保存每个附件。

于 2011-03-05T14:38:48.570 回答