.Mht 问题 - 空白页

.Mht issue - Blank Page

*上下文:阅读正文电子邮件中的 table。为此,请使用此方法(将电子邮件另存为 .mht,然后使用网络数据抓取提取数据 activity)

这个方法我用了很多次,现在还在用。但是,最近我开始了一个新过程,当我尝试这种方法时,一些邮件显示为“空白页”

有什么想法吗? xD

我唯一发现的是工作邮件的页脚中有此代码,而其他邮件则没有:

Working Mail

No Working Mail

遗憾的是,您不能依赖始终遵循标准的电子邮件(有关详细信息,请参阅 https://www.rfc-editor.org/rfc/rfc1521)。在理想情况下,您应该会遇到带有 multipart/alternative 的消息,本质上是给您两个部分:

  1. text/html 带有格式化的 (html) 消息以及 table 在您的情况下,
  2. text/plain 包含纯文本,允许任何 reader 解释该电子邮件(即使没有 html 支持——考虑在您的命令 prompt/terminal 中显示电子邮件)。

仅仅因为有标准并不意味着人们会遵循它们。您将看到没有第二部分的消息、不正确的内容类型等等。

浏览器似乎依赖于第一部分 -- text/html。如果该部分不存在,则可能根本不会显示任何内容(请注意,结果可能因浏览器而异,并且不同的内容类型可能会产生不同的结果——我在 Chromium 上使用 multipart/mixed 对此进行了测试)。

与 UiPath 一起前进,有以下选项:

  • 在不同的应用程序中打开 MHT 文件,例如 Mozilla Thunderbird(您可能需要先将它们重命名为 eml)。使用 Desktop Automation 重命名并打开文件,然后根据需要提取数据。
  • 使用 Read Text File activity as a backup in case your browser displays an empty page. You might need to use regular expressions to get the desired section (text/plain), but I'd recommend using a framework such as MimeKit(作为 NuGet 包提供,因此将其集成到 UiPath 中应该很容易)。

在任何情况下,您都需要解析 table 的纯文本表示,可能会将其转换为 DataTable 对象,其中包括:

  • 正在检测 table、
  • 的开始和结束
  • 拆分行(例如遇到换行符时),
  • 拆分单元格(制表符或分隔符)。

除非您确切知道预期的格式,否则这可能具有挑战性。