2

Python と imaplib を使用して電子メール クライアントを構築しようとしています。

現在、私の問題は次のとおりです。すべての電子メールを含むフォルダーを検索したいです。通常、「[GMail]/すべてのメール」と呼ばれます。

私の問題は、GMail がネイティブ ポルトガル語であることです。したがって、私の場合、ポルトガル語に相当する「[Gmail]/Todo o correio」を選択すると機能しますが、「[Gmail/すべてのメール」を選択すると機能しません。

国に関係なく、Gmail アカウントの「すべてのメール」フォルダにアクセスする普遍的な方法が必要なので、これは問題です。

もちろん、すべてのフォルダーで検索を実行して集計結果を返すなどの素朴な解決策に従うこともできますが、その道をたどりたくはありません。

これに対する普遍的な修正はありますか?ありがとうございました

4

2 に答える 2

4

すぐに解決策を見つけました。便宜上記載します。

mail_instance.list() を実行すると、次のようなフォルダーのリストが取得されます。

(\Noselect \HasChildren) "/" "[Gmail]"
(\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Caixote do Lixo"
(\HasNoChildren \Flagged) "/" "[Gmail]/Com estrela"
(\HasChildren \HasNoChildren \Sent) "/" "[Gmail]/Correio enviado"
(\HasChildren \HasNoChildren \Important) "/" "[Gmail]/Importante"
(\HasChildren \HasNoChildren \Drafts) "/" "[Gmail]/Rascunhos"
(\HasNoChildren \Junk) "/" "[Gmail]/Spam"
(\HasChildren \HasNoChildren \All) "/" "[Gmail]/Todo o correio"

(これらはポルトガル語です)

「すべてのメール」フォルダの名前には、常に文字列に「\All」というタグが含まれているため、.list() によって返されるすべてのフォルダ名で「\All」を検索するだけです。

次に、「[Gmail]」のインデックスから、その後の最初の二重引用符のインデックスまでの部分文字列を抽出するだけで、「すべてのメール」フォルダ名が得られます。

于 2012-12-02T18:47:50.030 に答える