打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于邮件的几个模块
userphoto

2012.06.09

关注
perl mail(Mail::POP3Client+MIME::Parser)
2011-06-10 08:59:40

http://blog.csdn.net/ganmao/archive/2008/04/02/2245918.aspx

  [Perl][Mail]关于邮件的几个模块 收藏

这几天净捣鼓收取邮件的问题了,一开始用了些基本的模块,很多问题解决不了,查找了文档才有点眉目.

先说说环境:
Cygwin+Perl5.8+Mail::POP3Client+MIME::Parser+MIME::Entity+Time::HiRes

Mail::POP3Client  封装了基本的Net::POP3,使用起来更简单

MIME::Parser是MIME::Entity的子类,就是用来解析格式的

Time::HiRes用来计算消耗时间

看看代码:
===========================================================================
#!/usr/bin/perl -w
use strict;

use Mail::POP3Client;
use Time::HiRes qw(gettimeofday tv_interval);
use MIME::Parser;
use MIME::Entity;

my $start_time = [gettimeofday];

my $host   = 'pop3.163.com';
my $user   = '####@163.com';
my $passwd = '******';

my $client = new Mail::POP3Client( $user, $passwd, $host );
my $parser = MIME::Parser->new;
my $mgrnum = $client->Count;

print "当前共有邮件[$mgrnum]封!\n";

for ( my $i = 1 ; $i <= $mgrnum ; $i++ ) {
    my $headandbody = $client->HeadAndBody($i);
    my $entity = $parser->parse_data($headandbody);

    $parser->decode_headers(1);
    print "From      = ",$entity->head->get('From');
    print "To        = ",$entity->head->get('To');
    print "Cc        = ",$entity->head->get('Cc');
    print "Subject   = ",$entity->head->get('Subject');
    print "MIME type = ",$entity->mime_type,"\n";
    print "Parts     = ",scalar $entity->parts,"\n";
    my $part_num = scalar $entity->parts;
    for my $part ($entity->parts){
        print "\t",$part->mime_type,"\t",$part->bodyhandle,"\n";
    }

    print "=========================================================\n";
   
    exit if ( (scalar $entity->parts) == 1 );
    #exit if ($i >= 3);
}

my $interval = tv_interval( $start_time, [gettimeofday] );
print "it take the time : $interval seconds\n";
==============================================================================

前面始终没有闹明白为什么邮件头里面Subjects中文总是乱码不能解析,翻了翻RFC的文档,看看MIMR::Parser才知道有一个 decode函数

    ### Automatically attempt to RFC 2047-decode the MIME headers?
    $parser->decode_headers(1);             ### default is false

解析还是很方便的,呵呵

在$parser->parse_data($headandbody)的时候会将邮件body保留在本地msg-PID-#.txt文件 中,附件也保留在相应目录下!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python的下一代http客户端
使用HttpClient通过POST方式发送XML
使用带有html正文的gmail帐户的SMTP python发送电子邮件
18.1.11. email: Examples — Python v2.7.1 docu...
简单的用 Java Socket 编写的 HTTP 服务器应用
NodeJS -- 自定义模块
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服