免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4956 | 回复: 3
打印 上一主题 下一主题

用perl接收邮件,如何设置抄送方邮件地址的格式。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-18 15:06 |只看该作者 |倒序浏览
本帖最后由 roam_cat 于 2011-01-18 16:01 编辑

各位高人帮看一下,
我写了一段接收POP3邮件的程序,现已能够接收邮件,并将发送人,抄送人,邮件主题显示出来。但因为是通过outlook发送的邮件,所以在得到抄送人的邮件地址里,显示东西太多了,如下:
CC: =?gb2312?B?stzSsA==?= <XXX@xxxxx.com.cn>,     =?gb2312?B?J7r6vaEn?= <xxxx@xxxxxxx.com.cn>, <xxxxxx@xxxxxx.com.cn>, <xxxxx@xxx.com.cn>,   =?gb2312?B?yM7U8rrG?= <xxxxx@xxxxxx.com>

在mail::header 中或接收邮件的代码中,加什么东西,能够变成,
CC:<XXX@xxxxx.com.cn>,<XXX@xxxxx.com.cn>,<XXX@xxxxx.com.cn>,<XXX@xxxxx.com.cn>,这种格式的。
谢谢!

下面是我写的代码
#!/usr/local/bin/perl
# netpop3.pl
use warnings;
use strict;

use Net::POP3;
use Mail::Header;

my($pop, $host, $user, $pass, $count, $size, $implcmd);

die "Syntax: $0 <popserver.domainname> <user> <password>\n" if $#ARGV != 2;
$host = $ARGV[0];
$user = $ARGV[1];
$pass = $ARGV[2];

$pop = Net::POP3->new($host) || die "$0: unable to connect to $host server\n";
defined($count = $pop->login($user, $pass)) || die "$0: unable to login\n";
($count, $size) = $pop->popstat;
print 'You have ' . $count . ' messages. ';
print "\n";
for(my $i = 1; $i <= $count; $i++) {
   my($head, $list, $from, $cc, $subject, $filename, @result);
   
   $list = $pop->top($i);
   $head = Mail::Header->new($list, Modify => 1);
   $head->unfold('From');
   $head->unfold('cc');
   $head->unfold('Subject');
   printf "%04d ", $i;
   $from = $head->get('From');
   chomp $from;
   printf "%-35.35s ", $from;
   $cc = $head->get('cc');
   chomp $cc;
   printf "%-35.35s ", $cc;
   $subject = $head->get('Subject');
   chomp $subject;
   printf "%-35.35s\n", $subject;
   $filename = "/tmp/mailrecord${i}.eml";
   open(MSGINFO,">$filename") ||  die "Couldn't open $filename for appending: $!";
   print MSGINFO ("FROM: $from\n");
   print MSGINFO ("CC: $cc\n");
   print MSGINFO ("SUBJECT: $subject\n");
   close(MSGINFO);
   $pop->delete($i);
   @result = readpipe("more $filename");
   print "@result";
}
$pop->quit;

论坛徽章:
0
2 [报告]
发表于 2011-01-18 16:05 |只看该作者
哪位高人给看下呗

论坛徽章:
0
3 [报告]
发表于 2011-01-18 20:31 |只看该作者
搞个正则把地址过滤出来不就得了嘛,

  1.     $cc =~ s/.+?(<[^>]+>,?)/$1/g;
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-01-19 09:58 |只看该作者
回复 3# socyno


    好用了,谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP