Можно ли разместить бинарные файлы в usenet с Python? - PullRequest
1 голос
/ 07 июня 2010

Я пытаюсь использовать nntplib, поставляемый с python, для создания некоторых сообщений в usenet. Однако я не могу понять, как разместить двоичные файлы с помощью метода .post.

Я могу публиковать обычные текстовые файлы просто отлично, но не двоичные файлы. есть идеи?

- РЕДАКТИРОВАТЬ -

Итак, благодаря комментарию Адриана, приведенному ниже, мне удалось сделать один шаг к моей цели.

Теперь я использую библиотеку электронной почты, чтобы создать составное сообщение и прикрепить к сообщению двоичные файлы. Однако я не могу понять, как передать это сообщение непосредственно методу nttplib post.

Сначала я должен написать временный файл, а затем прочитать его обратно в метод nttplib. Должен быть способ сделать все это в памяти .... какие-либо предложения?

1 Ответ

3 голосов
/ 07 июня 2010

Вы должны MIME-кодировать свой пост: бинарный пост в новостной группе NNTP похож на письмо с вложением.

файл должен быть закодирован в ASCII, обычно с использованием кодировки base64, затем закодированный файл упаковывается в составное сообщение MIME и отправляется ...

взгляните на модуль email: он реализует все, что вы хотите.

Я рекомендую вам прочитать RFC3977, который является официальным стандартом, определяющим протокол NNTP.

для второй части вашего вопроса:

используйте StringIO для создания поддельного объекта файла из строки (метод nntplib post() принимает открытые объекты файла). У email.Message объектов есть метод as_string() для извлечения содержимого сообщения в виде простой строки.

...