- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试编写一个脚本,将 .mbox
文件的每个电子邮件元素转换为 .csv
文件。我特别需要以下元素,但如果有一种方法可以“为每个元素编写”,那将是首选:
收件人、发件人、抄送、密件抄送、日期、主题、正文
我在网上找到了一个脚本,看起来是我需要的开始,documentation关于电子邮件模块,但我找不到关于如何操作的任何细节
to
、from
、cc
'd 等).csv
中的唯一单元格值。 这是我找到的示例代码:
import mailbox
import csv
writer = csv.writer(open("clean_mail_B.csv", "wb"))
for message in mailbox.mbox('Saks.mbox'):
writer.writerow([message['to'], message['from'], message['date']])
最佳答案
为此,您首先需要确定所有邮箱项目中可能存在的 key 的完整列表。然后您可以使用它来编写 CSV header 。
接下来,您需要使用 .items()
从每条消息中获取所有键值对。然后可以将其转换回字典并写入您的 CSV 文件。
不幸的是,mailbox
库没有直接公开消息字典,否则可以直接编写。
import mailbox
import csv
mbox_file = 'sample.mbox'
with open('clean_mail_B.csv', 'w', newline='', encoding='utf-8') as f_output:
# Create a column for the first 30 message payload sections
fieldnames = {f'Part{part:02}' for part in range(1, 31)}
for message in mailbox.mbox(mbox_file):
fieldnames.update(message.keys())
csv_output = csv.DictWriter(f_output, fieldnames=sorted(fieldnames), restval='', extrasaction='ignore')
csv_output.writeheader()
for message in mailbox.mbox(mbox_file):
items = dict(message.items())
for part, payload in enumerate(message.get_payload(), start=1):
items[f'Part{part:02}'] = payload
csv_output.writerow(items)
使用 DictWriter
而不是标准的 CSV 编写器。当某些消息不包含所有可能的 header 值时,这将更好地应对。
消息有效负载可以分为多个部分,这些部分作为单独的列标题添加,例如Part01
, Part02
。通常应该有 1 或 2 个,但您的示例 mbox 包含一个带有奇怪签名的 25?
如果 mbox
包含更多消息的有效负载条目(即 >30),则使用 extrasaction='ignore'
忽略这些条目。另一种方法是将所有有效负载合并到一个列中。
关于Python 3.6 Mbox 到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50709874/
我想知道如何修改下面的代码来剥离=20多行末尾的字符,主要是按时间顺序将消息从第一个接收或发送到最后一个。我不确定这是否是内部 Perl 例程。 #!/usr/bin/perl use warning
根据我发现的文档 An \mbox within math mode does not use the current math font; rather it uses the typeface o
为了开发邮件客户端,我需要一个非常大的 mbox 测试文件,其中包含尽可能多的邮件。最好是 >100.000 封邮件 (>10GB)。 它应该是真实的邮件数据,因为我不仅要测试性能,还要测试邮件过滤器
我有一个通过 evolution 创建的假脱机 mbox 文件,其中包含我希望打印的一系列电子邮件。我的问题是电子邮件没有按时间顺序放入 mbox 文件中。我想知道使用 bash、perl 或 pyt
我已经使用 Gmail API 获取了邮件内容和必要的 header 。我想将它们写入 mbox 文件。我可以找到 Go 包和示例来读取和解析 mbox 文件。但是如何使用 Go 创建和写入 mbox
我有一个 mbox 邮箱,其中包含邮件的副本,它们仅在“X-Evolution:” header 中有所不同。 我想以尽可能快速和简单的方式删除重复的。这似乎已经写好了,但我还没有找到它,尽管我已经查
也许这是我的疑问,但我不这么认为。我正在尝试将从 mbox 格式解析的消息导入 MySQL,但是当我通过 PHP 或通过 phpMyAdmin 手动执行此操作时,MySQL 失败。有什么想法吗? $s
我正在尝试与 Adobe Test & Target 交互,因为我想通过 mbox 加载 JSON 而不是标记。我想将一些 mbox 内容加载到 javascript 中并手动将其添加到 DOM
我正在使用 python 包邮箱,我正在尝试提取消息并清理数据。我遇到了一个问题,对于大型数据库,我可以用我的示例文件调用构造函数,但是当我尝试打印任何消息时,我的程序挂起。我认为这是因为我要读取的文
这个有效: import mailbox x = mailbox.mbox('filename.mbox') # works 但是如果我只有文件的打开句柄而不是文件名怎么办? fp = open('
我正在更换主机,我需要将旧服务器上的 maildir 帐户转换为新服务器上的 mbox。 关于执行此操作的最佳方法有什么想法吗? 我发现了这个: for i in new/* cur/*;do for
我想读取来自 Gmail 备份的 3GB 大 .mbox 文件。这有效: import mailbox mbox = mailbox.mbox(r"D:\All mail Including Spam
我正在尝试使用 Python 3 从雷鸟 mbox 文件中提取电子邮件正文。它是一个 IMAP 帐户。 我希望将电子邮件正文的文本部分作为 unicode 字符串进行处理。它应该“看起来像”电子邮件在
谁能告诉我如何使用 mstor 在 Windows 上阅读 mbox 邮件消息 提前致谢... 最佳答案 访问 mstor 邮箱的示例 URL 可能是: Microsoft Windows 计算机上的
这个问题已经有答案了: How to parse mailbox file in Ruby? (3 个回答) 已关闭 9 年前。 我有一个 mbox 文件,其中包含我的 Gmail 邮件。我想解析该文
我正在使用 mstor 阅读 mbox 电子邮件,但我无法使用我传递的 urlName 名称连接到商店,默认情况下它连接到其他我的 macbine 上的位置。在继续连接到商店之前,我是否需要使用 ms
如何使用IMAP协议(protocol)和JavaMail读取邮件收件箱,然后使用本地磁盘存储邮件。没有 mstor 的文档。我尝试这种方式,但似乎 MStorStore 只是读取本地 mbox,而不
我正在尝试编写一个脚本,将 .mbox 文件的每个电子邮件元素转换为 .csv 文件。我特别需要以下元素,但如果有一种方法可以“为每个元素编写”,那将是首选: 收件人、发件人、抄送、密件抄送、日期、主
我刚刚使用 Google 的新下载功能下载了我所有的 Gmail,它给了我一个很大的 .mbox 文件。开始从文件中提取和处理单个电子邮件的脚本的基本外壳是什么? 最佳答案 Matthew Russe
我想从 mbox 文件中读取邮件并根据该文件执行一些操作。我不想编写/修改 mbox 文件,但它会被另一个进程修改(主要是添加新邮件)。 我正在阅读这份文档。 http://docs.python.o
我是一名优秀的程序员,十分优秀!