2010-09-22 66 views
3

我使用Perl模塊Mail::Box::Manager從Maildir中讀取消息並將它們移動到另一個目錄中。一旦腳本完成處理Maildir中的郵件消息,它似乎也會刪除cur /和new/Maildir目錄,並且需要重新創建Maildir文件/目錄。如何停止Perl的Mail :: Box :: Manager從刪除目錄?

我不希望腳本刪除文件夾並不得不重新創建Maildir結構。

我喜歡簡單的東西:

#!/usr/bin/perl 
use Mail::Box::Manager; 

my $cnt = 0; 
my $mgr = Mail::Box::Manager->new; 
my $folder = $mgr->open(folder => '/home/vmail/mailfolder/', 
        access => 'rw', 
        type => 'maildir', 
        log => 'DEBUG', 
        ); 

foreach my $msg ($folder->messages) { 
    # ... doing some processing of $msg here, then, move the mail for storage 

    my $filename = $msg->filename || "NA"; 
    $filename =~ m#(.*)/new/(.*)$#; 

    $mgr->moveMessage("/dir/$filename", 
         $folder->message($cnt), 
         create => 1); 
    $cnt++; 
} 

$folder->close(); 

任何建議大受接待。謝謝。

回答

5

添加

remove_when_empty => 0, 

$mgr->open通話。

+0

謝謝,工作過。 – Imo 2010-09-22 18:25:05

+0

我錯過了什麼或者是沒有記錄的?我沒有在open()的選項下看到它。 – 2010-09-22 20:24:35

+0

@brian d foy,'open'文檔說「有關文件夾選項的說明,請參閱構造函數的選項[Mail :: Box :: new()](http://search.cpan.org/ perldoc?Mail :: Box#Constructors)爲每種類型的郵箱。「在那裏描述'remove_when_empty'。 – cjm 2010-09-22 21:17:20