2010-06-07 54 views
1

我正在尝试使用python附带的nntplib来创建一些文章到usenet。但是我无法弄清楚如何使用.post方法发布二进制文件。是否可以使用Python将二进制文件发布到usenet?

我可以张贴纯文本文件就好了,但不是二进制文件。有任何想法吗?

- EDIT--

所以感谢阿德里安的评论下面我已经成功地朝着自己的目标一步。

我现在使用的电子邮件库做一个多部分消息和二进制文件附加到邮件。然而,我似乎无法弄清楚如何直接传递消息到nttplib post方法。

我得先写一个临时文件,然后再将其nttplib方法读取它。必须有一种方法可以在记忆中完成这一切......任何建议?

+0

请在一个单独的问题发表新的问题......(还是看看编辑给我的答案) – 2010-06-07 06:34:55

+0

我想这仍然是相同的原始的问题,如何发布二进制文件的Usenet的一部分。 – rnavarro 2010-06-07 10:10:42

回答

3

你必须MIME编码您的帖子:二进制后在NNTP新闻组就像是带有附件邮件。

文件在ASCII进行编码,通常使用base64编码,然后将编码后的文件打包ITON多部分MIME消息,并张贴...

看看在email模块:它实现了所有你要的那个。

我建议你阅读RFC3977这是官方的标准定义NNTP协议。

你问题的第二部分:

使用StringIO从字符串建立一个假的文件对象(nntplib的post()方法接受打开的文件对象)。 email.Message对象有一个as_string()方法来检索消息的内容作为一个普通的字符串。

+0

啊有趣,我会看看谢谢阿德里安! – rnavarro 2010-06-07 05:36:01

相关问题