是否可以使用Python将二进制文件发布到usenet?

时间:2010-06-07 05:28:10

标签: python nntp

我正在尝试使用python附带的nntplib为usenet发布一些帖子。但是我无法弄清楚如何使用.post方法发布二进制文件。

我可以发布纯文本文件,但不能发布二进制文件。任何想法?

- 编辑 -

感谢Adrian在下面的评论,我已经朝着我的目标迈出了一步。

我现在使用电子邮件库制作多部分邮件并将二进制文件附加到邮件中。但是,我似乎无法弄清楚如何将该消息直接传递给nttplib post方法。

我必须先写一个临时文件,然后再读回nttplib方法。必须有一种方法可以在记忆中做到这一点....任何建议?

1 个答案:

答案 0 :(得分:3)

你必须对你的帖子进行MIME编码:NNTP新闻组中的二进制帖子就像带有附件的邮件。

文件必须以ASCII编码,通常使用base64编码,然后将编码文件打包到多部分MIME邮件中并发布...

查看email模块:它实现了你想要的一切。

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

问题的第二部分:

使用StringIO从字符串构建伪文件对象(nntplib的post()方法接受打开的文件对象)。 email.Message个对象使用as_string()方法以明文字符串的形式检索邮件内容。