如何解码从 Thunderbird 或 Gmail 保存的电子邮件文件中的 Base64 编码内嵌附件?

如何解码从 Thunderbird 或 Gmail 保存的电子邮件文件中的 Base64 编码内嵌附件?

虽然base64 [--decode]在本地编码和解码文件时效果很好,但我无法解码从 Thunderbird 或 Gmail 保存的 eml 文件中的 Base64 编码内联附件。

我观察到所有 eml 文件中的 base64 编码块都与base64生成的类似,但行的长度不同:eml 文件中的 base64 编码文本块中的行由以下组成:72 个字符,而本地生成的 base64 编码文件包括76 个字符长线。我怀疑这种差异是我无法成功使用base64 --decodeeml 文件片段的原因。

我的假设是真的吗?如何解码这些附件?

答案1

该命令base64执行编码通过以 76 个字符的默认列宽换行文本,除非使用选项指定了另一个值--wrap=COLS

无论列宽如何,该命令base64 --decode都可以正常工作,例如,文本块可能由单行(无论多长)组成,也可以由以任何固定列宽换行的多行组成。

从 Thunderbird 或 GMail 等网络邮件保存的“Internet 消息格式”(*.eml) 文件的问题实际上是它们使用 DOS/Windows (“CRLF”/“\r\n”) - 而不是 Unix/Linux ( "LF" / "\n") - 行结束符,而 和 都base64使用base64 --decode后者。

dos2unix这意味着,应首先使用以下命令转换“Internet 消息格式”(*.eml) 文件(或从中检索的 Base64 编码文本块)执行base64 --decode命令。

相关内容