Server IP : 85.214.239.14 / Your IP : 3.145.92.96 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/root/usr/share/doc/libmime-tools-perl/examples/ |
Upload File : |
#!/usr/bin/perl -w =head1 NAME mimedump - dump out the contents of a parsed MIME message =head1 DESCRIPTION Read a MIME stream from the stdin, and dump its contents to the stdout. =head1 SYNOPSIS mimedump < mime.msg =head1 AUTHOR Andreas Koenig suggested this, and wrote the original code. Eryq perverted the hell out of it. =cut use MIME::Parser; #------------------------------ # # dump_entity ENTITY, NAME # # Recursive routine for dumping an entity. # sub dump_entity { my ($entity, $name) = @_; defined($name) or $name = "'anonymous'"; my $IO; # Output the head: print "\n", '=' x 60, "\n"; print "Message $name: "; print "\n", '=' x 60, "\n\n"; print $entity->head->original_text; print "\n"; # Output the body: my @parts = $entity->parts; if (@parts) { # multipart... my $i; foreach $i (0 .. $#parts) { # dump each part... dump_entity($parts[$i], ("$name, part ".(1+$i))); } } else { # single part... # Get MIME type, and display accordingly... my ($type, $subtype) = split('/', $entity->head->mime_type); my $body = $entity->bodyhandle; if ($type =~ /^(text|message)$/) { # text: display it... if ($IO = $body->open("r")) { print $_ while (defined($_ = $IO->getline)); $IO->close; } else { # d'oh! print "$0: couldn't find/open '$name': $!"; } } else { # binary: just summarize it... my $path = $body->path; my $size = ($path ? (-s $path) : '???'); print ">>> This is a non-text message, $size bytes long.\n"; print ">>> It is stored in ", ($path ? "'$path'" : 'core'),".\n\n"; } } 1; } #------------------------------ # # main # sub main { print STDERR "(reading from stdin)\n" if (-t STDIN); # Create a new MIME parser: my $parser = new MIME::Parser; # Create and set the output directory: (-d "mimedump-tmp") or mkdir "mimedump-tmp",0755 or die "mkdir: $!"; (-w "mimedump-tmp") or die "can't write to directory"; $parser->output_dir("mimedump-tmp"); # Read the MIME message: $entity = $parser->read(\*STDIN) or die "couldn't parse MIME stream"; # Dump it out: dump_entity($entity); } exit(&main ? 0 : -1); #------------------------------ 1;