use Net::IMAP::Simple; use Term::ReadKey; $|=1; print <); print "Username: "; chomp ($user = ); print "Password: "; ReadMode 'noecho'; # hide typing chomp ($pass = ReadLine 0); ReadMode 0; #restore normalness print <; if ($resp =~ /^y/i) { last; } if ($resp =~ /^n/i) { print "Aborted.\n"; exit; } } print "Connecting...\n"; my $server = Net::IMAP::Simple->new( $host ) or die $!; print "Authenticating...\n"; $server->login( $user,$pass ) or die $!; @boxes = $server->mailboxes; print "Found ".(scalar@boxes)." boxes...\n\n"; mkdir 'Email'; foreach $box (@boxes) { $filename = $box; $filename =~ s/^INBOX\.//; $filename =~ tr/ ./_-/; print "Getting box '$box' to '$filename'.\n"; print " - Selecting..."; if ($numMsgs = $server->select( $box )) { print "\n"; } else { print "Error!!\n"; next; } print " - Downloading $numMsgs messages...\n"; open FP,"> Email/$filename" or die "Couldn't open '$filename': $!"; for $msg ( 1 .. $numMsgs ) { print " - Getting message $msg of $numMsgs...\n"; @lines = @{$server->get( $msg )}; for (@lines) { s/\r\n/\n/g; print FP $_; } print FP "\n\n\n"; } close FP; } print "Disconnecting...\n"; $server->quit(); print "Done!";