厉害厉害,gmail 都用上了


2011/12/13 Fayland Lam <[email protected]>

> http://perlchina.github.com/advent.perlchina.org/2011/Gmail.html
>
>  =for advent_year 2011
>
> =for advent_day 13
>
> =for advent_title Gmail
>
> =for advent_author Fayland Lam
>
> Gmail 挺不错的。本章主要介绍如何使用 IMAP 来收取邮件和如何在 TLS 上发送邮件。
>
> Gmail 支持 POP3, 但是个人更喜欢用 IMAP,因为可以只查询未读邮件,和标记为已读,无须将其删除。还有它还能检查非 INBOX 的邮件。
>
> IMAP 一般使用 M<Mail::IMAPClient>, 使用例子如下:
>
> =begin code
>
> use Mail::IMAPClient;
> use IO::Socket::SSL;
>
> # Connect to IMAP server
> my $imap = Mail::IMAPClient->new(
>   Server   => 'imap.gmail.com',
>   User     => '[email protected]', # or App mail
>   Password => 'mysecretpass',
>   Port     => 993,
>   Ssl      =>  1,
> ) or die "Cannot connect through IMAPClient: $!";
>
> $imap->select("INBOX");
> $imap->Peek(1); # we'll use see to mark as read
> my @unseen = $imap->unseen or print "No unseen messages in inbox\n";
> foreach my $msg_id (@unseen) {
>     my $msg_from = $imap->get_header($msg_id, "From");
>     my $msg_subject = $imap->get_header($msg_id, "Subject");
>     my $string = $imap->body_string($msg_id)
>         or die "Could not body_string: ", $imap->LastError;
>     print "We get $msg_subject from $msg_from: $string\n";
>
>     $imap->see($msg_id); # mark as read if needed
> }
>
> # Say so long
> $imap->logout();
>
> =end code
>
> 邮件的用途比较广泛,比如你在其他地方或者某些人会经常给你发送一些特定格式的邮件,您可以写个脚本来处理这些。
>
> 另外我们也经常需要发送邮件,如果要大批量发送的话,sendmail, Qmail 或者 Postfix
> 等是一个不错的选择,但是如果仅仅是需要偶尔发送一些邮件,还是可以使用 Gmail 的 SMTP 服务器的。这里我们用
> M<Email::Sender::Simple> 和 M<Email::Sender::Transport::SMTP::TLS> 来发送。
>
> =begin pre
>
> use Email::Sender::Simple qw(sendmail);
> use Email::Sender::Transport::SMTP::TLS;
> use Try::Tiny;
>
> my $transport = Email::Sender::Transport::SMTP::TLS->new(
>     host => 'smtp.gmail.com',
>     port => 587,
>     username => '[email protected]',
>     password => 'mysecretpass',
> );
>
>
> use Email::Simple::Creator; # 需要发送附件的话,可以试试 MIME::Lite 到最后 my $message =
> $msg->as_string; 即可
> my $message = Email::Simple->create(
>     header => [
>         From    => '[email protected]',
>         To      => '[email protected]',
>         Subject => 'Hi Baby',
>     ],
>     body => 'I Love you!',
> );
>
> try {
>     sendmail($message, { transport => $transport });
> } catch {
>     die "Error sending email: $_";
> };
>
> =end pre
>
> 更多更详细的资料,请参阅各自的 perldoc
>
> 谢谢。
>
>
> --
> Fayland Lam // http://www.fayland.org/
>
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。
> 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>



-- 
            Yours Sincerely
                    Zeng Hong

-- 
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]。
要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

回复