如何使用 Linux 从电子邮件中检索 HTML?

如何使用 Linux 从电子邮件中检索 HTML?

我使用的是 Linux 机器(Debian),并在其上安装了 fetchmail 和 procmail。目前,它能够每分钟提取一次发送到我的 gmail 地址的邮件。但是,fetchmail 提取的文件不是常规的 html 文件,而是包含可引用打印的字符。

我的目标是能够获取电子邮件的 HTML 源代码,就像我在 Windows 上打开 Outlook、右键单击邮件并选择“显示源代码”一样。

由于我想自动执行这项任务,因此能够以编程方式执行此操作也很重要。

编辑:我最初的问题不够精确,所以这里有更多关于我的问题的信息。我的一个客户每天都会给我发一封电子邮件,其中包含一个包含前一个工作日销售数据的表格。现在,每天我都必须将电子邮件中的数据复制粘贴到 EXCEL 文件中。但是,由于这是一项非常重复的任务,我希望有一个可以自动为我完成这项任务的解决方案。我知道如何使用 Python 将数据写入 EXCEL 文件,并且我知道如何使用一些 Python 库从 html 文档中检索信息。

因此,我决定使用 Linux 中的 crontab、fetchmail 和 procmail 来执行以下操作:每隔一分钟,我会检查邮箱中是否收到了客户的电子邮件。如果是,我会在该文件上运行一个 python 脚本来检索信息。之后,我将这些信息输入到 EXCEL 文件中并将其发送给我自己。

该脚本在我的 PC 上运行良好,可以使用我从 Outlook 收到的电子邮件的 HTML 源代码。但是,在我的 Linux 机器上,它不起作用。我从 Linux 机器打开了电子邮件文件的源代码,发现部分 HTML 代码已被修改。

答案1

您似乎在这里做出了一些不合理的假设。电子邮件不一定只有一个正文部分,也可能不是 HTML 格式。

如果你没有更多关于你真正想要什么的信息,这将是非常推测的;但类似的东西

:0B:
* Content-type: text/html
* Content-transfer-encoding: quoted-printable
| quoted-printable --decode >>extracted.html

将解码 QP 并附加到不断增长的 HTML 有效负载文件中(假设您有一个名为解码 QPquoted-printable选项的命令--decode)。

这可能没什么用,因为大多数 HTML 负载都在 MIME 多部分容器中。以上假设消息有一个顶级负载,并且text/html使用 quoted-printable 进行编码,如果情况并非如此,则将不执行任何操作。

Procmail 并不擅长遍历 MIME 结构,但使用 Python 和标准email库等工具应该很容易编写类似的程序。还有一些独立工具,例如ripmime,允许您从 MIME 消息中提取选定的有效负载。

答案2

非常感谢大家的回答。

虽然我已经找到了自己的解决方案,但我认为将来我应该考虑使用您提到的一些解决方案。

我终于找到了我想要的解决方案。我遇到的问题是,当我打开用 fetchmail 检索的电子邮件文件时,它添加了许多特殊符号。因此它在浏览器上看起来不太好,并且在不应该出现的地方出现了“=”符号。

因此,为了解决这个问题,我发现当我使用 Python 打开文件时,每行末尾都有字符“=”和 \n。因此,当我删除行末的“=”和“\n”时,当我再次使用 Web 浏览器打开文件时,文件看起来不错。

相关内容