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

发布于 2024-09-04 11:04:19 字数 324 浏览 4 评论 0原文

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

我可以很好地发布纯文本文件,但不能发布二进制文件。有什么想法吗?

-- 编辑--

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

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

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

I'm trying to use the nntplib that comes with python to make some posts to usenet. However I can't figure out how to post binary files using the .post method.

I can post plain text files just fine, but not binary files. any ideas?

-- EDIT--

So thanks to Adrian's comment below I've managed to make one step towards my goal.

I now use the email library to make a multipart message and attach the binary files to the message. However I can't seem to figure out how to pass that message directly to the nttplib post method.

I have to first write a temporary file, then read it back in to the nttplib method. There has to be a way to do this all in memory....any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

臻嫒无言 2024-09-11 11:04:19

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

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

看看 email 模块:它实现了您想要的所有功能。

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

对于问题的第二部分:

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

you have to MIME-encode your post: a binary post in an NNTP newsgroup is like a mail with an attachment.

the file has to be encoded in ASCII, generally using the base64 encoding, then the encoded file is packaged iton a multipart MIME message and posted...

have a look at the email module: it implements all that you want.

i encourage you to read RFC3977 which is the official standard defining the NNTP protocol.

for the second part of your question:

use StringIO to build a fake file object from a string (the post() method of nntplib accepts open file objects).
email.Message objects have a as_string() method to retrieve the content of the message as a plain string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文