2

Gmailアカウントに接続し、電子メールアドレスにある「+」タグに基づいて電子メールをソートするimaplibを使用するpythonスクリプトがあります。例: myaccount+root.foo.bar@gmail.com に送信されたメールは root\foo\bar に移動されます。

私のロジックは次のようになります: タグを抽出する -> フォルダーを作成しようとする -> メッセージをフォルダーにコピーします。

場合によっては、同じタグで大文字と小文字が異なるメールが届くことがあります。たとえば、myaccount+root.FOO.BAR@gmail.com を入力すると、次の出力が表示されます。

#Attempting to creating folder 'root/FOO/BAR'
('NO', ['[ALREADYEXISTS] Folder name conflicts with existing folder name. (Failure)'])
#Copying message to folder 'root/FOO/BAR'
('NO', ['[TRYCREATE] No folder root/FOO/BAR (Failure)'])

したがって、同じ名前のフォルダーが既に存在するため (大文字と小文字が異なるだけで)、フォルダーの作成に失敗しますが、明示的なフォルダーが存在しないため、コピーは失敗します。

問題なくメッセージを移動できるように、既存のフォルダーの正しい大文字と小文字を区別できる巧妙な方法はありますか?

注: これは、すべてのタグを小文字に強制するほど簡単ではありません。ユーザーは、電子メール クライアントを使用してアカウントに接続し、時折、その時点で意味のある大文字と小文字を使用してフォルダーを手動で作成します。

4

1 に答える 1

2

Google はフォルダが既に存在すると不平を言いますが、その中に何かを移動しようとするとエラーが発生しますか? 素晴らしい。

IMAP には、利用可能なメールボックス (フォルダー) を一覧表示する「LIST」コマンドがあります。

https://www.rfc-editor.org/rfc/rfc3501#section-6.3.8

アクセス方法は、IMAP クライアント ライブラリによって異なります。 以下に例をいくつか示します。

于 2011-06-10T16:16:27.590 に答える