将 uuencoding 切换为 MIME

Posted

技术标签:

【中文标题】将 uuencoding 切换为 MIME【英文标题】:Switch uuencoding to MIME 【发布时间】:2013-10-08 21:50:39 【问题描述】:

我的任务是研究我们拥有的电子邮件功能,该功能使用 uuencoding 将电子邮件发送到更广泛接受的其他东西。我猜有一些收件人没有收到附件 (.csv) 文件的问题,因为它是 uuencoded。

我猜我们想将其切换为 MIME 编码?

我想得到一些建议,也许是一些很好的起点来寻找这样的东西。

【问题讨论】:

【参考方案1】:

是的,您需要切换到 MIME。但是,您应该知道,MIME 不是一种编码,就像 UUEncode 是一种编码一样。 MIME 本质上是对 rfc822 消息格式的扩展。

您没有指定您打算使用哪种语言,但我建议您查看我编写的 2 个 MIME 库中的 1 个,因为它们是(如果不是)最快的以及大多数符合 rfc 的库。

如果您打算使用 C 或 C++,请查看GMime。

如果您打算使用 C#,请查看 MimeKit。

我可以推荐的唯一其他不错的 MIME 库是 libetpan(一个非常低级的 C API)和 vmime(一个多合一的 C++ 库,它执行 MIME、IMAP、SMTP、POP3 等) .

libetpan 对 GMime 的唯一“优势”是它实现了自己的数据结构库,它在内部使用,而不是像我对 GMime 所做的那样,即重用一个广泛可用的名为 GLib 的库。不过,GLib 在每个平台上都可用,因此我重新发明***似乎毫无意义——另外,GLib 提供了一个我大量使用的引用计数对象系统。出于某种原因,我想不通,人们对依赖 GLib 感到厌烦,抱怨“天哪,依赖!”好像他们还没有已经添加对 MIME 库的依赖...

哦...我想如果您使用 Java,您可能应该考虑使用 JavaMail。

除此之外,我从未见过其他可接受的 MIME 库。说真的,他们中的 99% 都遭受了与我在 a recent blog post 上咆哮的相同的设计和实现缺陷。虽然这篇博文专门针对 C# MIME 解析器,但对于我见过的所有 javascript、C、C++、Go、Python、Eiffel 等实现(我见过很多 em> 个)。

例如,我最近被要求查看一个流行的 JavaScript MIME 解析器。 第一件事是在整个 MIME 消息输入字符串上使用 strsplit() 将其拆分为“\r\n”。然后它通过 ':' 再次遍历每一行 strsplit()',然后通过 ',' 对标头进行 strsplit() 寻址,依此类推……它简直是在尖叫业余时间。太糟糕了,我本来可以哭的(但我没有,因为我就是那样的男人)。

【讨论】:

以上是关于将 uuencoding 切换为 MIME的主要内容,如果未能解决你的问题,请参考以下文章

java中的uuencode压缩文件

试图确定文件是不是已被 uuencoded

在 C 中向 UUEncoder 添加空填充

使用 mailx 和 uuencode 发送附件

uuencoding / uudecoding 有啥特殊的变体吗?

python zlib库是不是支持uuencode?