我正在尝试使用 python 附带的 nntplib 向 usenet 发布一些帖子。但是我不知道如何使用 .post 方法发布二进制文件。
我可以很好地发布纯文本文件,但不能发布二进制文件。有什么想法吗?
-- 编辑--
感谢 Adrian 下面的评论,我已经朝着我的目标迈出了一步。
我现在使用电子邮件库来制作多部分消息并将二进制文件附加到消息中。但是我似乎无法弄清楚如何将该消息直接传递给 nttplib post 方法。
我必须首先写入一个临时文件,然后将其读回到 nttplib 方法中。必须有一种方法可以在内存中完成这一切......有什么建议吗?
最佳答案
您必须对您的帖子进行 MIME 编码:NNTP 新闻组中的二进制帖子就像带有附件的邮件。
文件必须以 ASCII 进行编码,通常使用 base64
编码,然后将编码后的文件打包到多部分 MIME 消息中并发布...
看看 email
模块:它实现了您想要的所有内容。
我鼓励您阅读RFC3977
这是定义 NNTP 协议(protocol)的官方标准。
您问题的第二部分:
使用StringIO
从字符串构建一个假文件对象(nntplib 的 post()
方法接受打开的文件对象)。
email.Message
对象有一个 as_string()
方法来检索纯字符串形式的消息内容。
关于python - 是否可以使用 Python 将二进制文件发布到 usenet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2987255/