First, be sure that you define the FORM tag in your
HTML like this:
<form method=post enctype="multipart/form-data"> # multipart/form-data
+ is necessary for uploads
...
<input type="file" name="file"> # This defines an upload field
Processing the query then should be easy with MIME:Lite:
# Create new Mail object.
my $mail = MIME::LITE->new(
From => $from,
To => $to,
Subject => $subject,
Type => 'multipart/mixed'
);
# 'Attach' text to it.
$mail->attach(
TYPE => 'TEXT',
DATA => $messagebody
);
# If we have an attachment, attach it.
if ($q->param("file")) {
my $upload = $q->upload;
my $fh = $upload->fh;
my @data;
binmode $fh;
local $_ = '';
while (read($fh, $_, 1024)) {
push @data, $_;
}
close $fh;
$mail->attach(
Data => \@data,
Filename => $upload->filename,
Type => $upload->type
);
}
# Finally, send the mail.
open (MAIL, "| /usr/sbin/sendmail -t -i") or die $!;
$mail->print(\*MAIL);
close MAIL;