File: mailZip.pl

package info (click to toggle)
libarchive-zip-perl 1.14-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 548 kB
  • ctags: 317
  • sloc: perl: 3,369; makefile: 45
file content (67 lines) | stat: -rw-r--r-- 1,572 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/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 );