将uuencoding切换为MIME

问题描述:

我的任务是查看是否有电子邮件功能,我们已经使用uuencoding将电子邮件发送到了更广泛接受的其他地方。我想有一些问题,收件人没有收到附件(.csv)文件,因为它是uuencoded。将uuencoding切换为MIME

我猜我们想要切换到MIME编码?

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

是的,你会想切换到MIME。不过,您应该知道,MIME不是与UUEncode是编码相同的编码方式。 MIME本质上是对rfc822消息格式的扩展。

您没有指定您打算使用哪种语言,但是我建议您查看我编写的2个MIME库中的一个,因为它们是(如果不是,)最快和最rfc-在那里符合标准的库。

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

如果您打算使用C#,请参阅MimeKit

我可以推荐的唯一其他像样的MIME库是libetpan(一个非常低级别的C API)和vmime(MIME,IMAP,SMTP,POP3等所有功能于一身的C++库)。

libetpan对GMime的唯一“优势”是它实现了它自己的内部使用的数据结构库,而不是像我用GMime做的那样,这是重用一个名为GLib的广泛使用的库。尽管GLib在每个平台上都可用,但对我来说重新发明轮子似乎毫无意义 - 此外,GLib提供了一个我经常使用的ref-counting物件系统。出于某种原因,我无法弄清楚,人们会依赖GLib而挂断电话,抱怨“omg,一个依赖!”因为如果他们不已经添加依赖于MIME库...

哦......我想如果你使用的是Java,你应该看看使用JavaMail

除此之外,没有其他可接受的MIME库,我见过。严重的是,其中99%的设计和实施缺陷遭遇了我在a recent blog post上肆意抨击的问题。虽然博客文章是专门针对C#MIME解析器的,但对于我所见过的所有JavaScript,C,C++,Go,Python,Eiffel等实现都是如此(我已经看到了其中的批次) 。

例如,我最近被要求查看流行的JavaScript MIME解析器。 第一个它所做的一件事就是在整个MIME消息输入字符串上使用strsplit()将其分割为“\ r \ n”。然后它通过':'再次遍历strsplit()的每一行,然后用','等strsplit()地址头......它真的尖叫着业余时间。这是非常糟糕的,我可以哭泣(但我没有,因为我很男人喜欢)。