2015-08-14 59 views
0

任何想法如何將我的IMAP帳戶中的某個文件夾弄平?有幾百個((子)子)子文件夾。這是一個非常古老的檔案(從搜索是一個地獄,子文件夾是一個好主意,是的,其中大部分是千年),我想將所有的消息添加到我的標準檔案文件夾。在Google上找不到任何內容。我有根用戶訪問主持mailaccount的VPS。 Directadmin和Roundcube已安裝。這是一個標準的CentOS 7 Apache安裝。任何人都知道任何腳本,工具,Thunderbird插件,或者其他什麼?我很流利的PHP,但不是Python,但願意查看它,如果需要。IMAP拼合文件夾結構

提前致謝!

回答

2

試試這個:

./copy_nested_msgs.pl

http://www.athensfbc.com/imap-tools/public/copy_nested_msgs.tar.gz

-m文件夾(父母,你要複製其子文件夾)
-M文件夾(目標文件夾的郵件將被複制)
-S源服務器:端口/用戶/密碼
-D目標服務器:端口/用戶/密碼
-L日誌文件
[-d]調試模式(可選)

可以從源文件夾中的消息複製到目標文件夾相同的服務器上或到另一個服務器。

+0

謝謝!它花了幾個小時,我不得不暫時關閉服務器防火牆來做到這一點,但它的工作!你是否特別爲我寫這篇文章?看起來是這樣的,因爲你第一次沒有提到這個劇本......如果是這樣的話:非常感謝你!我希望很多其他人會在這裏找到並使用它。像魅力一樣工作! – Roemer

+0

很高興爲你效勞。我修改了一個現有的腳本來做你想要的。 –

0

這很簡單。使用IMAP RENAME命令重命名結構中的每個文件夾。例如:

之前

1列表 「」 *

* LIST(\未標記) 「/」 A

* LIST(\未標記) 「/」 A/B

* LIST(\未標記) 「/」 A/B/C

* LIST(\未標記) 「/」 A/B/C/d

* LIST(\未標記) 「/」 A/B/C/d/E

* LIST(\未標記) 「/」 A/B/C/d/E/F

* LIST(\未標記)「/」A/B/C/D/E/F/G

對郵箱列表進行排序,以便首先進行最深嵌套。

1 RENAME 「A/B/C/d/E/F/G」, 「G」

2 RENAME 「A/B/C/d/E/F」, 「F」

3 RENAME 「A/B/C/d/E」, 「E」

4 RENAME 「A/B/C/d」, 「d」

5 RENAME 「A/B/C」 「C」

6 RENAME「A/B」「B」

Af terwards ...

1列表 「」 *

* LIST(\未標記) 「/」 A

* LIST(\未標記) 「/」 B

* LIST(\未標記) 「/」 C

* LIST(\未標記) 「/」 d

* LIST(\未標記) 「/」 E

* LIST(\未標記) 「/」 F

* LIST(\未標記) 「/」 G

一個簡單的IMAP腳本可以被寫入到這樣做。我可以發佈一個鏈接到我的,但它是用Perl編寫的。您必須將其轉換爲您選擇的語言,但也許可能會有所幫助。

+0

謝謝。請做!我沒有IMAP命令語言體驗。我不知道你的A B C D等是否應該是字面名稱,變量或其他東西。 (有數百個郵箱,所以手動命名它們不是一種選擇。)我從字面上不理解上述命令的作用。如果你給我一些提示,我會自己去休息。 – Roemer

+0

http://www.athensfbc.com/public/flatten_imap_folders.tar.gz。它包含Perl腳本和一個解釋如何運行它的README文件。 –

+0

非常感謝!太棒了。 但是,我已經想知道一個RENAME如何做到這一點。我認爲存在誤解?我需要將所有子文件夾的所有消息放到主文件夾中。您的scipt似乎移動所有的SUBFOLDERS而不是消息。我對嗎? 有沒有一個容易適應的可能或者是一個完全不同的球場? – Roemer