AnyEvent-IMAP
view release on metacpan or search on metacpan
lib/AnyEvent/IMAP.pm view on Meta::CPAN
my ($self, $folders) = @_;
my $all_cv = AE::cv();
my %ret;
$all_cv->begin(sub { shift->send(1, \%ret); });
for my $folder (@$folders) {
$all_cv->begin();
$self->status($folder)->cb(sub {
my ($ok, $ret) = shift->recv;
$ret{$folder} = $ret if $ok;
$all_cv->end();
});
}
$all_cv->end;
return $all_cv;
}
sub select {
my ($self, $folder) = @_;
$folder = imap_string_quote($folder);
my ($id, $cv) = $self->send_cmd("SELECT $folder");
return $cv;
}
sub fetch {
my ($self, $query) = @_;
my ($id, $cv) = $self->send_cmd("FETCH $query", sub {
# in form: [ '*', ID, 'FETCH', [ tokens ]]
[map { +{@{$_->[3]}} } grep { $_->[2] eq 'FETCH' } map {imap_parse_tokens([$_])} @_]
});
return $cv;
}
sub expunge {
my ($self) = @_;
my ($id, $cv) = $self->send_cmd('EXPUNGE');
return $cv;
}
sub create_folder {
my ($self, $folder) = @_;
$folder = imap_string_quote($folder);
my ($id, $cv) = $self->send_cmd("CREATE $folder");
return $cv;
}
sub noop {
my ($self) = @_;
my ($id, $cv) = $self->send_cmd('NOOP');
return $cv;
}
# TODO:
# add_flags
# copy
# search('ALL')
# get_part_body
1;
__END__
=encoding utf8
=head1 NAME
AnyEvent::IMAP - IMAP client library for AnyEvent
=head1 SYNOPSIS
use AnyEvent::IMAP;
my $imap = AnyEvent::IMAP->new(
host => 'server',
user => "USERID",
pass => 'password',
port => 993,
ssl => 1,
);
$imap->reg_cb(
connect => sub {
$imap->login()->cb(sub {
my ($ok, $line) = shift->recv;
...
}
}
);
$imap->connect();
=head1 DESCRIPTION
AnyEvent::IMAP is IMAP client library for AnyEvent/Perl.
=head1 METHODS
And some methods are usable by L<Object::Event>.
=over 4
=item my $imap = AnyEvent::IMAP->new(%args);
Create a new instance with following attributes.
=over 4
=item host
=item user
=item pass
=item port
=item ssl
=back
=item my ($tag, $cv) = $imap->send_cmd($command[, $filter : CodeRef])
Send a $command to the server. You can filter the response by optional $filter.
$tag is a IMAP command tag.
( run in 0.711 second using v1.01-cache-2.11-cpan-39bf76dae61 )