2010-06-07 60 views
1

我正在嘗試使用python附帶的nntplib來創建一些文章到usenet。但是我無法弄清楚如何使用.post方法發佈二進制文件。是否可以使用Python將二進制文件發佈到usenet?

我可以張貼純文本文件就好了,但不是二進制文件。有任何想法嗎?

- EDIT--

所以感謝阿德里安的評論下面我已經成功地朝着自己的目標一步。

我現在使用的電子郵件庫做一個多部分消息和二進制文件附加到郵件。然而,我似乎無法弄清楚如何直接傳遞消息到nttplib post方法。

我得先寫一個臨時文件,然後再將其nttplib方法讀取它。必須有一種方法可以在記憶中完成這一切......任何建議?

+0

請在一個單獨的問題發表新的問題......(還是看看編輯給我的答案) – 2010-06-07 06:34:55

+0

我想這仍然是相同的原始的問題,如何發佈二進制文件的Usenet的一部分。 – rnavarro 2010-06-07 10:10:42

回答

3

你必須MIME編碼您的帖子:二進制後在NNTP新聞組就像是帶有附件郵件。

文件在ASCII進行編碼,通常使用base64編碼,然後將編碼後的文件打包ITON多部分MIME消息,並張貼...

看看在email模塊:它實現了所有你要的那個。

我建議你閱讀RFC3977這是官方的標準定義NNTP協議。

你問題的第二部分:

使用StringIO從字符串建立一個假的文件對象(nntplib的post()方法接受打開的文件對象)。 email.Message對象有一個as_string()方法來檢索消息的內容作爲一個普通的字符串。

+0

啊有趣,我會看看謝謝阿德里安! – rnavarro 2010-06-07 05:36:01

相關問題