gpt4 book ai didi

python - 将电子邮件存储到 mongodb

转载 作者:可可西里 更新时间:2023-11-01 10:07:31 25 4
gpt4 key购买 nike

我遇到了一个非常奇怪的错误。

for emailid in item_ids:
resp, data = conn.fetch(emailid, "(RFC822)")
try:
db.emails.insert({'raw': data})

所以我正在使用 oauth2.clients.imap 从 gmail 中获取一堆数据。从 gmail 获取电子邮件后,我决定首先将其作为“原始”存储在我的 mongodb 中。

然后在我脚本的另一部分,我做了这样的事情:

for i,j in enumerate(db.emails.find()):
raw_s = j['raw'][0][1]
email = email_module.message_from_string(raw_s)
if email.is_multipart():
print get_cleaned_body(email)

请注意,我执行了一个import email as email_module 并隐藏了变量 email,因为我想不出一个更好的术语来表示变量来保存电子邮件实例

奇怪的是,我的电子邮件实例都不是多部分的!

如果我将检索代码修改为:

for emailid in item_ids:
resp, data = conn.fetch(emailid, "(RFC822)")
try:
#db.emails.insert({'raw': data})
e = email.message_from_string(data[0][1])
print e.is_multipart()

我看到一些 True

我想对此的一种可能解释是,将数据保存到 mongodb 中会弄乱某些东西,从而无法正确解析电子邮件?

最佳答案

原来你应该这样做:

oid = db.emails.insert({'raw': bson.binary.Binary(data)})

以二进制保存保证数据的原始内容不被改变。

关于python - 将电子邮件存储到 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047773/

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