设为首页 收藏本站
查看: 840|回复: 0

[经验分享] perl mail(Mail::POP3Client+MIME::Parser)

[复制链接]

尚未签到

发表于 2018-9-1 06:16:18 | 显示全部楼层 |阅读模式
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 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文件 中,附件也保留在相应目录下!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-560129-1-1.html 上篇帖子: 用Notepad++打造Perl IDE-Perl基地 下篇帖子: Learning Perl 1-debugoo
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表