10

IMAP4UTF-7フォルダーパスエンコーディング用の「公式」関数/ライブラリがPythonに存在するかどうかを知りたいです。

私はimapInstance.list()次のパスを取得しますIMAPUTF-7エンコード:

'(\\HasNoChildren) "." "[Mails].Test&AOk-"',

次のエンコーディングを行う場合:

(u"[Mails].Testé").encode('utf-7')

私は得る:

'[Mails].Test+AOk-'

これはUTF-7ですが、IMAPUTF-7でエンコードされていません。Test+AOk-IMAP UTF-7でエンコードされたバージョンを取得するには、代わりにTest&AOk- 公式の関数またはライブラリが必要です。

4

4 に答える 4

7

IMAPClient パッケージには、IMAP の変更された UTF-7 を使用してエンコードおよびデコードする機能があります。IMAPClient.imap_utf7 モジュールを見てください。このモジュールはスタンドアロンで使用することも、フォルダー名のエンコードとデコードを透過的に処理する IMAPClient を使用することもできます。

プロジェクトのホームページは次のとおりです: http://imapclient.freshfoo.com/

コード例:

from imapclient import imap_utf7
decoded = imap_utf7.decode('&BdAF6QXkBdQ-')
于 2012-10-09T16:01:27.093 に答える
3

ただし、imapclient の実装はちょっと壊れています。

x = "foo\rbar\n\n\n\r\r"
imap_utf7.decode(imap_utf7.encode(x))

結果:

>> 'foo&bar\n\n\r-'

編集:

いくつかの調査の後、このテストでラウンドトリップ エンコーディングに失敗しないMailPileの実装を見つけました。興味があれば、Python3 にも移植しました: https://github.com/MarechJ/py3_imap_utf7

于 2015-08-17T14:37:32.540 に答える