使用 mbox Python 模块解码并访问 mbox 文件

2023-11-30

我需要将电子邮件数据库迁移到 CRM,但有两个问题:

我可以访问 mbox 文件,但内容未正确解码。

我想创建一个类似数据框的结构,其中包含以下列:“日期、发件人、收件人、主题、正文”

我已经尝试过以下方法:

for i, message in enumerate(mbox):
    print("from   :",message['from'])
    print("subject:",message['subject'])
    if message.is_multipart():
        content = (part.get_payload(decode=True) for part in message.get_payload())
    else:
        content = message.get_payload(decode=True)
    print("content:",content)
    print("**************************************")

    if i == 10:
        break

并得到以下输出:

from   : =?UTF-8?Q?Gonzalo_Gasset_Yba=C3=B1ez?= <[email protected]>
subject: =?UTF-8?Q?Marqu=C3=A9s_de_Vargas_=26_Baud?=
content: <generator object <genexpr> at 0x7fe025f3a350>
**************************************
from   : Mailtrack Reminder <[email protected]>
subject: Re: Presupuesto de Logotipo y =?utf-8?Q?Dise=C3=B1o?= Corporativo
 para nuevo proyecto
content: b'<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta charset="utf-8">\r\n    <meta name="viewport" content="width=device-width">\r\n    <title>Reminder</title>\r\n</head>\r\n<style media="screen">\r\n    body {\r\n        font-family: Helvetica;\r\n    }\r\n</style>\r\n<body style="background-color: #f6f6f6; -webkit-font-smoothing: antialiased; font-size: 14px; line-height: 1.4; margin: 0; padding: 0; .....

具体实施办法邮箱.邮箱接受一个factory可用于构建消息的参数。通过通过parse的方法字节解析器初始化为默认策略我们可以生成邮件留言它将自动解码标题和正文文本。

选择实际的身体比较棘手,也许取决于您的特定要求。在下面的代码示例中,任何“文本”类型部分都连接在一起,而非文本部分则被拒绝。您可能希望应用自己的选择标准。

from email.parser import BytesParser
from email.policy import default
import mailbox

mbox = mailbox.mbox(path_to_mailbox, factory=BytesParser(policy=default).parse)

for _, message in enumerate(mbox):
    print("date:  :", message['date'])
    print("to:    :", message['to'])
    print("from   :", message['from'])
    print("subject:", message['subject'])
    if message.is_multipart():
        contents = []
        for part in message.walk():
            maintype = part.get_content_maintype()
            if maintype == 'multipart' or maintype != 'text':
                # Reject containers and non-text types
                continue
            contents.append(part.get_content())
        content = '\n\n'.join(contents)
    else:
        content = message.get_content()
    print("content:", content)
    print("**************************************")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mbox Python 模块解码并访问 mbox 文件 的相关文章

  • 如何为 Intellij/PyCharm 设置 PYTHONSTARTUP 脚本

    我尝试添加PYTHONSTARTUP环境变量 我还尝试了自定义启动脚本 但更令人惊讶的是 这also没有工作 npa别名无法识别 出于一点绝望 我什至尝试添加到interpreter options 那什么也没做 实际上是什么Interpr
  • Spyder 导入模块出错

    我正在尝试在 Spyder 中使用 sklearn 一开始 当我尝试导入它时 我收到 ImportError No module named sklearn 然后我用 PYTHONPATH 管理器设置 PATH 然后使用工具菜单中的 更新模
  • 如何从 Lua 调用 Python 函数?

    我想从我的 lua 文件运行 python 脚本 我怎样才能实现这个目标 Example Python代码 sum py file def sum from python a b return a b Lua code main lua f
  • python 脚本中 os.system 的 256 和 512 响应代码是什么

    当我在 python 中使用 os system ping 服务器时 我得到多个响应代码 使用的命令 os system ping q c 30 s SERVERANME 0 在线 256 离线 512 512 是什么意思 Per the
  • 检测/删除 Python 2 + GTK 中不成对的代理字符

    在Python 2 7中我可以成功转换Unicode字符串 abc udc34xyz 转换为 UTF 8 结果是 abc xed xb0 xb4xyz 但是当我将 UTF 8 字符串传递给例如时 pango parse markup or
  • 在 vim 折叠线中语法高亮 Python

    我发现代码折叠 http en wikipedia org wiki Code folding帮助我更好地组织我的文件 因此 在我的底部 vimrc 我启用vim代码折叠 http vimdoc sourceforge net htmldo
  • 使用 boto3 从 s3 下载时使用 filename 作为文件名

    我正在使用 boto3 上传文件 如下所示 client boto3 client s3 aws access key id id aws secret access key key client upload file tmp test
  • Flask 中的 import 和 extends 有什么区别?

    我正在阅读 Flask Web 开发 在例4 3中 extends base html import bootstrap wtf html as wtf 我想知道 extends 和 import 有什么区别 我认为它们在用法上很相似 在什
  • PyCharm 无法识别字典值类型

    我有一个简单的代码片段 其中我将字典值设置为空列表 new dict for i in range 1 13 new dict i 现在 如果在下一行的循环内我会输入new dict i 并添加一个点 我希望 PyCharm 向我显示可用于
  • 如何在交互式绘图(Python)中获得鼠标指向的(x,y)位置?

    我使用 ipython 笔记本 带有魔法 matplotlib nbagg 我正在审查matplotlib widget Cursor但仅查看光标widgets Cursor http matplotlib org 1 4 3 exampl
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • 如何在 Pytorch 中将一维 IntTensor 转换为 int

    如何将一维 IntTensor 转换为整数 这 IntTensor int 给出错误 KeyError Variable containing 423 torch IntTensor of size 1 我所知道的最简单 最干净的方法 In
  • PyCharm - 如何挂起所有线程

    我们使用 PyCharm 5 0 1 进行多线程调试 当它在断点处停止时 只有特定线程停止 而所有其他线程继续 这使得 冻结时刻 和检查参数值以及其他线程的当前状态变得困难 当其中一个线程在断点处停止时 是否可以挂起所有线程 这在最新的 P
  • 检查多个 pd.DataFrame 是否相等

    是否有一种 Pythonic 方式 无循环或递归 来检查是否超过两个pd DataFrames 例如 pd DataFrames 列表 彼此相等吗 就像是 all x equals dfs 0 for x in dfs with dfs数据
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • Scrapy的redirect_urls异常.KeyError

    我是 Scrapy 和 Python 的新手 最近推出了我的第一个蜘蛛 有一个功能似乎以前有效 但现在它只适用于我试图废弃的一些网站 代码行是 item url direct response request meta redirect u
  • 使用 statsmodels.formula.api 中的 ols - 如何删除常数项?

    我正在遵循第一个例子statsmodels教程 http statsmodels sourceforge net devel http statsmodels sourceforge net devel 如何指定在 ols 中不使用常数项进
  • 如何使用 pygame.mixer 重复音乐?

    我创建了以下使用 pygame mixer 播放 mp3 音乐的代码 然而 音乐不会重复 有什么想法可以让音乐重复播放吗 这是代码 playlist list playlist append put music here mp3 playl
  • 如何可视化多维数据上的 kmeans 聚类

    我在 mnist 数据集上使用 kmeans 聚类算法 并希望可视化聚类后的图 到目前为止我做了这个 from mnist import MNIST mndata MNIST Datasets X train y train mndata
  • php向多个收件人发送邮件

    我可以通过在邮件程序中定义 id 来将电子邮件发送到一个电子邮件 id 但是当用户在表单中键入 消息和电子邮件 id 时 我无法理解如何发送到多个收件人 例如 我正在显示一个带有两个文本区域的表单 一个用于电子邮件 ID 一个用于自定义消息

随机推荐

  • 将行样本与类标签相匹配

    我对下面的代码有一个小问题 最后一行是具体的 我试图找到我的 样本 的类名 我的意思是我需要知道哪个法线和哪个蓝精灵属于我的 1000x6 样本的每一行 sampling normIdx strmatch normal Book2 norm
  • 获取没有底部导航栏高度的屏幕尺寸

    所以flutter中的基本脚手架有appbar body和bottom bar 在我的底部导航栏中 我有 3 个项目 第 1 页 编辑器页面 第 2 页 贴纸 第3页 文字定制页面 每个页面都有自己的脚手架 编辑器页面有一个名为 Layou
  • 在 C# 中,字符串是引用类型,但为什么在另一种方法中操作它后它没有改变[重复]

    这个问题在这里已经有答案了 可能的重复 C 字符串引用类型 比如说 我有一个名为 string sample Initial value 传递给方法 test 之后 public static void Test string testSt
  • Xamarin 形成 MVVM Stacklayout 内容绑定

    我对 Xamarin 和 Xamarin 表单非常陌生 我需要一些帮助 我有一个 StackLayout 我想从 ViewModel 动态添加项目 问题是我似乎无法将 StackLayout 的内容绑定到 ViewModel 的 Stack
  • 单击 Facebook“赞”按钮获取用户电子邮件 ID?

    我想要用户点击 facebook Like 按钮时的电子邮件地址 这是我正在使用的代码 FB Event subscribe edge create function response like clicked 但响应只有 HREF 我该怎
  • Wordpress 和 Woocommerce 中的挂钩及其挂钩函数执行队列

    尽管我在其他网络平台和语言方面有经验 但我还是 WordPress WooCommerce 和 PHP 的新手 我已经搜索过 但没有找到我的问题的答案 由 add action 创建的挂钩是否 添加 到该特定挂钩调用的操作列表中 或者它们是
  • Java初始化和实例化的顺序

    我正在尝试将 JVM 中的初始化和实例化过程拼凑在一起 但 JLS 在一些细节上有点迟钝 因此如果有人介意清理一些细节 我们将不胜感激 这是我到目前为止所能弄清楚的 初始化 递归地初始化类的静态最终变量及其作为编译时常量的接口 按文本顺序退
  • 谷歌应用引擎;上传到 blobstore 出现 404 错误

    我正在使用 GAE 和 Python 2 7 制作一个网站 可以将带有 ascii 数据的文件上传到 blobstore 我为此使用的代码与本节下的教程中给出的代码几乎相同完整的示例应用程序 https developers google
  • 在浏览器中从网络摄像头获取 ReadableStream

    我想在浏览器中将网络摄像头输入作为 ReadableStream 传输到 WritableStream 我尝试过使用 MediaRecorder API 但该流被分成单独的 blob 而我想要一个连续的流 我认为解决方案可能是将 Media
  • 除非重复为 true,否则 UNCalendarNotificationTrigger 不会被存储

    我注意到如果我创建一个UNCalendarNotificationTrigger使用自定义日期 除非我输入 let trigger UNCalendarNotificationTrigger dateMatching components
  • 为什么在这种情况下我必须以某种方式关闭 ZipOutputStream?

    我有两个例子 示例1 try ByteArrayOutputStream baous new ByteArrayOutputStream FileOutputStream fouscrx new FileOutputStream new F
  • 使用 PHP GD 图像库着色和交换颜色?

    您好 我正在尝试使用 PHP 的 GD 图像库对图像进行着色和交换颜色 我正在使用位于此处的原始图像 http korlon com youknowbetter test jpg 并希望它达到橙色的脸 黑色的衣服和头发 就像你在这里看到的那
  • Autohotkey:发送 5 位十六进制 unicode 字符

    我一直在尝试找到一种方法来重新映射键盘并发送 5 位十六进制 unicode 字符 方法如下所述 ahk Send只支持 4 位十六进制代码 U nnnn 我知 道在过去 autohotkey 本身不支持 unicode 因此需要一些函数才
  • 查找用户是否正在通话?

    我想查看用户是否正在使用该应用程序以及他们是否正在打电话 我正在点击此链接来检查用户是否正在通话 iOS 如何检查当前是否正在通话 然而 这看起来像是针对 Objective C 的 我想知道是否有一个 Swift 等价的东西 这是我的尝试
  • ng-click 不适用于 ng-bind-html

    我有这样的 html 模板 scope template span class pointer i class icon refresh pointer i span 我想使用绑定这个模板ng bind html 我尝试使用它 也使用过ng
  • Django JQuery 自动完成

    我正在尝试向我的表单添加自动完成字段 但我无法去上班 我几乎尝试了所有教程 请求发送正常 我收到 200 响应 在开发人员工具窗格中 当我单击请求时 在 响应 选项卡上我会看到整个 HTML 文件 不应该有一个 json 格式的东西吗 这是
  • System.out.println 错误 新程序员

    我正在尝试执行一个简单的输入程序 但出现错误System out println命令 我不知道为什么它不接受该命令并且在我修复它之前无法继续工作 错误说 Multiple markers at this line Syntax error
  • Populate() 引用嵌套在对象数组中

    我正在尝试使用 Show 模型中的数据填充 我的 User 模型中的所有订阅 我尝试过 populate subscriptions show 但它对结果没有任何作用 如果我将订阅设为一个简单的参考数组 如下所示 subscriptions
  • htaccess 只接受来自特定 http_referer 的流量

    我正在尝试设置一个 htaccess 文件来完成以下任务 仅当查看用户来自特定域时才允许查看我的网站 链接 那么 举例来说 我有一个名为 保护 mydomain com 我只希望来自 unprotected mydomain com 上的链
  • 使用 mbox Python 模块解码并访问 mbox 文件

    我需要将电子邮件数据库迁移到 CRM 但有两个问题 我可以访问 mbox 文件 但内容未正确解码 我想创建一个类似数据框的结构 其中包含以下列 日期 发件人 收件人 主题 正文 我已经尝试过以下方法 for i message in enu