use Mail::IMAPClient; use Getopt::Std; $mail_server = 'XXX.XXX.XXX.XXX'; # mail server IP $delimiter = "\t"; sub parse_options() { getopts("cd:m:v"); $mail_server = $opt_m if ($opt_m); $delimiter = $opt_d if ($opt_d); die "Usage: $0 [-c] [-m mail_server] [-d delimiter] user_name password\n" if (scalar(@ARGV) != 2); $user_name = $ARGV[0]; $password = $ARGV[1]; } sub show_folders() { local $user_name; local $password; my $client; my @folders; parse_options(); print "Connecting to mail server $mail_server as user '$user_name', " . "password '$password'.\n" if ($opt_v); $client = Mail::IMAPClient->new(Server => $mail_server, User => "$user_name", Password => $password) or die "Can't open IMAP connection to mail server $mail_server: $!\n"; @folders = $client->folders(); foreach my $folder (@folders) { if ($opt_c) { printf "%s%s%d\n", $folder, $delimiter, $client->message_count($folder); } else { print "$folder\n"; } } } show_folders();