2010-06-07 8 views
1

J'essaie d'utiliser le nntplib qui vient avec python pour faire des messages à usenet. Cependant, je ne peux pas comprendre comment publier des fichiers binaires en utilisant la méthode.Est-il possible de publier des binaires pour usenet avec Python?

Je peux publier des fichiers texte en clair, mais pas des fichiers binaires. des idées?

- EDIT--

Ainsi, grâce au commentaire de Adrian ci-dessous j'ai réussi à faire un pas vers mon but. J'utilise maintenant la bibliothèque d'email pour faire un message multipart et attacher les fichiers binaires au message. Cependant, je n'arrive pas à comprendre comment transmettre ce message directement à la méthode post nttplib.

Je dois d'abord écrire un fichier temporaire, puis le relire dans la méthode nttplib. Il doit y avoir un moyen de faire tout cela en mémoire .... des suggestions?

+0

s'il vous plaît poster de nouvelles questions dans une question distincte ... (toujours jeter un oeil à la modification de ma réponse) –

+0

Je pensais qu'il faisait encore partie de la même question originale, comment publier des binaires à usenet. – rnavarro

Répondre

3

vous devez encoder MIME votre message: un message binaire dans un groupe de discussion NNTP est comme un message avec une pièce jointe.

le fichier doit être codé en ASCII, en utilisant généralement l'base64 encodage, le fichier encodé est emballé Iton un message MIME multipart et posté ...

un coup d'oeil sur le module email: il met en œuvre tous que tu veux. Je vous encourage à lire RFC3977 qui est la norme officielle définissant le protocole NNTP.

pour la deuxième partie de votre question:

utilisation StringIO pour construire un objet de faux fichier à partir d'une chaîne (la méthode post() de nntplib accepte des objets de fichiers ouverts). email.Message Les objets ont une méthode as_string() pour récupérer le contenu du message en tant que chaîne simple.

+0

Ah intéressant, je vais jeter un oeil merci Adrien! – rnavarro