AnyEvent-IMAP

 view release on metacpan or  search on metacpan

example/demo.pl  view on Meta::CPAN

        $imap->login()->cb(sub {
            my ($ok, $line) = shift->recv;
            if ($ok) {
                $imap->capability()->cb(sub {
                    my ($ok, $line) = shift->recv;
                    infof("%s", ddf($line));
                });
                $imap->folders()->cb(sub {
                    my ($ok, $folders) = shift->recv;
                    if ($ok) {
                        $imap->status('INBOX')->cb(sub {
                            my ($ok, $status) = shift->recv;
                            infof("INBOX status: %s", ddf($status));
                        });
                        $imap->status_multi($folders)->cb(sub {
                            my ($ok, $statuses) = shift->recv;
                            infof("status_multi: %s", ddf($statuses));
                        });
                        $imap->select('INBOX')->cb(sub {
                            my ($ok, $ret) = shift->recv;
                            if ($ok) {
                                infof("selected: %s", ddf($ret));
                                $imap->fetch('1:5 (UID FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODYSTRUCTURE)')->cb(sub {
                                    my ($ok, $ret) = shift->recv;
                                    infof("summaries: %s ****************", $ok);
                                    for my $summary (@$ret) {
                                        $summary->{ENVELOPE} = AnyEvent::IMAP::Envelope->new(delete $summary->{ENVELOPE});
                                        infof("%s", ddf($summary));
                                    }
                                });
                                $imap->expunge()->cb(sub {
                                    my ($ok, $ret)= shift->recv;
                                    infof("expunge: %s", $ok);
                                });
                                $imap->create_folder('TEST');
                            }
                        });
                    }
                    infof('%s', ddf($line));
                });
            }
        });
    },
    send => sub {
        infof("SEND: %s", $_[1]);
    },
    recv => sub {
        infof("RECV: %s", $_[1]);
    },
    disconnect => sub {
        infof("disconnect: %s", $_[1]);
        $imap->connect();
    },
);
my ($ok, $res) = $imap->connect()->recv();
unless ($ok) {
    die $res;
}

# send ping
my $timer = AE::timer(30, 20*60, sub {
    $imap->noop();
});

AE::cv()->recv;



( run in 0.603 second using v1.01-cache-2.11-cpan-6aa56a78535 )