summaryrefslogtreecommitdiff
path: root/examples/mailZip.pl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/mailZip.pl')
-rw-r--r--examples/mailZip.pl69
1 files changed, 69 insertions, 0 deletions
diff --git a/examples/mailZip.pl b/examples/mailZip.pl
new file mode 100644
index 0000000..4e043aa
--- /dev/null
+++ b/examples/mailZip.pl
@@ -0,0 +1,69 @@
+#!/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);