#!/usr/bin/perl
use strict;
use Mail::POP3Client;
use MIME::Parser;
use MIME::Head;
use Mail::Header;
#usage() unless scalar @ARGV == 3;
my $pop = new Mail::POP3Client( HOST => 'server',
USER => 'my',
PASSWORD => 'pass' );
my $tmp_directory = "/tmp/attach";
my $parser = new MIME::Parser;
$parser->output_dir($tmp_directory);
$parser->output_prefix("attachment");
$parser->output_to_core();
open (FH,">>/tmp/msgtxt1");
for (my $i = 1; $i <= $pop->Count(); $i++){
my $head = $pop->Head($i);
if ($head =~ /X-MS-Has-Attach: yes/i){
foreach ( $pop->Head( $i ) ) {
if( /^(From|Subject):\s+/i ) {
if ( /Vincent/) {
my $msg = $pop->HeadAndBody($i);
### Automatically attempt to RFC-1522-
+decode the MIME headers?
$parser->decode_headers(1);
+ ### default is false
### Parse contained "message/rfc822" o
+bjects as nested MIME streams?
$parser->extract_nested_messages(0);
+ ### default is true
### Look for uuencode in "text" messag
+es, and extract it?
$parser->extract_uuencode(1);
+ ### default is false
### Should we forgive normally-fatal e
+rrors?
$parser->ignore_errors(0);
+ ### default is true
my $entity = $parser->parse_data($msg)
+;
}
}
}
# print "\n";
}
}
close(FH);
$pop->Close();
sub usage {
print "Usage: $0 <mail_server> <username> <password>\n";
exit;
}
Above code does save all attachment. Now I need to parse those attachment One of the attachment will be .msg file that contains header einfo etc. I need to extarct those header info and find the sender address. Can somebody help me in this.
|