tokuhirom's Blog

PerlでIMAPのフォルダー一覧を取得する

IMAP へのアクセスは Net::IMAP::Client でできます。Encode::IMAPUTF7 をつかうと日本語フォルダもデコードしてとれます。

use 5.017000;
use autodie;
use Net::IMAP::Client;
use Encode;
use Encode::IMAPUTF7;

binmode *STDOUT, ':utf8';

my $imap = Net::IMAP::Client->new(
    server => 'IMAP_SERVER',
    user => 'USERNAME',
    pass => 'PASSWORD',
    ssl => 1,
    port => 5963,
) or die "Cannot connect to IMAP server";
$imap->login or die "Cannot login: " . $imap->last_error;
my @folders = $imap->folders;
for (values $imap->status([$imap->folders])) {
    say decode('IMAP-UTF-7', $_->{name});
}