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

标签 python nntp

我正在尝试使用 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/

相关文章:

python - PyDev PYTHONPATH 不适用于单独的测试和 src 目录

nntp - 最好的 nntp 到 Web 网关?

python - 如何在 django/python 中使用 win32com Dispatch?

python - 如何调用方法名称为字符串的方法

centos - 尝试安装 NNTP 阅读器锡和 parsdate.y 错误

c++ - 任何好的 C++/C NNTP 库?

.net - NNTP usenet 下载消息

Java 和 NNTP : How to post binary file?

python - 从任何(不安全)字符串创建(理智/安全)文件名

python - argparse - 组合父解析器、子解析器和默认值