%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
#!/usr/bin/perl -w # Requires the following to be installed: # File::Path # File::Spec # IO::Scalar, ... from the IO-stringy distribution # MIME::Base64 # MIME::QuotedPrint # Net::SMTP # Mail::Internet, ... from the MailTools distribution. # MIME::Tools use strict; use Archive::Zip qw(:CONSTANTS :ERROR_CODES); use IO::Scalar; use MIME::Entity; # part of MIME::Tools package my $zipContents = ''; my $SH = IO::Scalar->new(\$zipContents); my $zip = Archive::Zip->new(); my $member; # add a string as a member: my $stringMember = '<html><head></head><body><h1>Testing</h1></body></html>'; $member = $zip->addString($stringMember, 'whatever.html'); # $member->desiredCompressionMethod(COMPRESSION_STORED); # write it to the scalar my $status = $zip->writeToFileHandle($SH); $SH->close; print STDERR "zip is " . length($zipContents) . " bytes long\n"; ### Create an entity: my $top = MIME::Entity->build( Type => 'multipart/mixed', From => 'ned@bike-nomad.com', To => 'billnevin@tricom.net', Subject => "Your zip", ); # attach the message $top->attach( Encoding => '7bit', Data => "here is the zip you ordered\n" ); # attach the zip $top->attach( Data => \$zipContents, Type => "application/x-zip", Encoding => "base64", Disposition => 'attachment', Filename => 'your.zip' ); # attach this code $top->attach( Encoding => '8bit', Type => 'text/plain', Path => $0, # Data => 'whatever', Disposition => 'inline' ); # and print it out to stdout $top->print(\*STDOUT);