.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Explode 3pm" .TH Explode 3pm 2024-03-07 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME MIME::Explode \- Perl extension for explode MIME messages .SH SYNOPSIS .IX Header "SYNOPSIS" .Vb 1 \& use MIME::Explode; \& \& my $explode = MIME::Explode\->new( \& output_dir => "tmp", \& mkdir => 0755, \& decode_subject => 1, \& check_content_type => 1, \& content_types => ["image/gif", "image/jpeg", "image/bmp"], \& types_action => "exclude" \& ); \& \& print "Number of messages: ", $explode\->nmsgs, "\en"; \& \& open(MAIL, "file.tmp") \& or die("Couldn\*(Aqt open file.tmp for writing: $!\en"); \& my $headers = $explode\->parse(\e*MAIL, \e*OUTPUT); \& close(OUTPUT); \& close(MAIL); \& \& for my $part (sort{ $a cmp $b } keys(%{$headers})) { \& for my $k (keys(%{$headers\->{$part}})) { \& if(ref($headers\->{$part}\->{$k}) eq "ARRAY") { \& for my $i (0 .. $#{$headers\->{$part}\->{$k}}) { \& print "$part => $k => $i => ", $headers\->{$part}\->{$k}\->[$i], "\en"; \& } \& } elsif(ref($headers\->{$part}\->{$k}) eq "HASH") { \& for my $ks (keys(%{$headers\->{$part}\->{$k}})) { \& if(ref($headers\->{$part}\->{$k}\->{$ks}) eq "ARRAY") { \& print "$part => $k => $ks => ", join(($ks eq "charset") ? " " : "", @{$headers\->{$part}\->{$k}\->{$ks}}), "\en"; \& } else { \& print "$part => $k => $ks => ", $headers\->{$part}\->{$k}\->{$ks}, "\en"; \& } \& print "$part => $k => $ks => ", $headers\->{$part}\->{$k}\->{$ks}, "\en"; \& } \& } else { \& print "$part => $k => ", $headers\->{$part}\->{$k}, "\en"; \& } \& } \& } \& \& if(my $e = $explode\->clean_all()) { \& print "Error: $e\en"; \& } .Ve .SH DESCRIPTION .IX Header "DESCRIPTION" MIME::Explode is perl module for parsing and decoding single or multipart MIME messages, and outputting its decoded components to a given directory ie, this module is designed to allows users to extract the attached files out of a MIME encoded email messages or mailboxes. .SH METHODS .IX Header "METHODS" .SS "new([, OPTION ...])" .IX Subsection "new([, OPTION ...])" This method create a new MIME::Explode object. The following keys are available: .IP output_dir 7 .IX Item "output_dir" Directory where the decoded files are placed .IP "mkdir => octal_number" 7 .IX Item "mkdir => octal_number" If the value is set to octal number then make the output_dir directory (example: mkdir => 0755). .IP "check_content_type => 0 or 1" 7 .IX Item "check_content_type => 0 or 1" If the value is set to 1 the content-type of file is checked .IP "decode_subject => 0 or 1" 7 .IX Item "decode_subject => 0 or 1" If the value is set to 1 then the subject is decoded into a list. .Sp .Vb 3 \& $header\->{\*(Aq0.0\*(Aq}\->{subject}\->{value} = [ARRAYREF]; \& $header\->{\*(Aq0.0\*(Aq}\->{subject}\->{charset} = [ARRAYREF]; \& $subject = join("", @{$header\->{\*(Aq0.0\*(Aq}\->{subject}\->{value}}); .Ve .IP "exclude_types => [ARRAYREF]" 7 .IX Item "exclude_types => [ARRAYREF]" Not save files with specified content types (deprecated in next versions) .IP "content_types => [ARRAYREF]" 7 .IX Item "content_types => [ARRAYREF]" Array reference with content types for "include" or "exclude" .IP "types_action => ""include"" or ""exclude""" 7 .IX Item "types_action => ""include"" or ""exclude""" If the action is a "include", all attached files with specified content types are saved but if the action is a "exclude", no files are saved except if its in the array of content types. If no array is specified, but the action is a "include", all attached files are saved, otherwise all files are removed if action is a "exclude". The default action is "include". .SS "parse(FILEHANDLE, FILEHANDLE)" .IX Subsection "parse(FILEHANDLE, FILEHANDLE)" This method parse the stream and splits it into its component entities. This method return a hash reference with all parts. The FILEHANDLE should be a reference to a GLOB. The second argument is optional. .SS nmsgs .IX Subsection "nmsgs" Returns the number of parsed messages. .SS clean_all .IX Subsection "clean_all" Cleans all files from the "output_dir" directory and then removes the directory. If an error happens returns it. .SH AUTHOR .IX Header "AUTHOR" Henrique Dias .SH CREDITS .IX Header "CREDITS" Thanks to Rui Castro for the revision. .SH "SEE ALSO" .IX Header "SEE ALSO" MIME::Tools, \fBperl\fR\|(1).