- 论坛徽章:
- 0
|
本帖最后由 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; |
|