# $Id$ # imap2folders -- converting IMAP directories to wl's .folders use strict; use Net::IMAP::Simple; use Config::Pit; my $config = pit_get("imap2folders", require => { "server" => "IMAP server to connect", "username" => "your username on the server", "password" => "your password on the server" }); my $imap = Net::IMAP::Simple->new($config->{server}) or die; $imap->login($config->{username}, $config->{password}) or die $imap->errstr; my %dir; for my $name ($imap->mailboxes) { my $dir = \%dir; for my $seg (split /\./ => $name) { $dir = \%{ $dir->{$seg} } } }; $imap->quit; dump_as_folders(\%dir, 0); #use Data::Dumper; #print Dumper \%dir; sub dump_as_folders { my ($dir, $level, $name) = @_; for my $key (sort keys %$dir) { my $fullname = $name ? "$name.$key" : $key; if (0 == scalar keys %{$dir->{$key}}) { print " " x $level, qq[%$fullname "$key"\n]; } else { print " " x $level, "$key {\n"; print " " x ($level+1), qq[%$fullname "*all*"\n]; dump_as_folders($dir->{$key}, $level + 1, $fullname); print " " x $level; print "}\n"; } } }