1

我正在尝试使用 python 附带的 nntplib 向 usenet 发布一些帖子。但是我不知道如何使用 .post 方法发布二进制文件。

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

- 编辑 -

因此,感谢阿德里安在下面的评论,我已经朝着我的目标迈出了一步。

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

我必须先写一个临时文件,然后将它读回nttplib 方法。必须有一种方法可以在内存中完成这一切......有什么建议吗?

4

1 回答 1

3

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

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

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

我鼓励您阅读RFC3977定义 NNTP 协议的官方标准。

对于您问题的第二部分:

用于StringIO从字符串构建假文件对象(post()nntplib 的方法接受打开的文件对象)。 email.Message对象具有as_string()将消息内容作为纯字符串检索的方法。

于 2010-06-07T05:30:18.263 回答