#!/usr/bin/perl -w
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw/fatalsToBrowser/;
use MIME::Lite;
my $empfaenger = 'dubu@localhost';
my $sender = 'apache@localhost';
print header();
print start_html('Beispiel Datei empfangen und per Mail versenden');
print h1('Beispiel Datei empfangen und per Mail versenden'),
p('Bitte eine Datei auswaehlen und mit dem Abschicken-Button hochschicken'),
start_multipart_form(),
"Dateiname:",
filefield('filename','',45),
submit('Submit','Abschicken'),
endform;
# Formulardaten bearbeiten, wenn vorhanden
if (my $file = param('filename')) {
my $tmpfile=tmpFileName($file);
my $mimetype = uploadInfo($file)->{'Content-Type'} || '';
print hr(),
h2("Dateiname: $file"),
h4("abgelegt als: $tmpfile"),
h4("MIME Type:",em($mimetype));
## Date als Mail versenden
# Erst der Mail-Header
my $msg = MIME::Lite->new (
From => $sender,
To => $empfaenger,
Subject => "Datei $file",
Type => 'multipart/mixed',
);
# Dann der begleitende Text
$msg->attach (
Type => 'TEXT',
Data => "Hier die Datei, versendet durch den Webserver (PID $$)",
);
# Dann das Attachment selber
$msg->attach (
Type => $mimetype,
Path => $tmpfile,
Filename => $file,
Disposition => 'attachment',
);
# TEST-AUSGABE im Browser (Vorsicht bei grossen Dateien!)
# print "<pre>\n", $msg->as_string, "\n</pre>\n";
# Message senden (default: sendmail benutzen, siehe Doku)
if ($msg->send()) {
print p(qq{<font color="green">Datei $file an $empfaenger verschickt.</font>});
} else {
print p('<font color="red">Sorry, keine Moeglichkeit Mails zu versenden!</font>');
}
}
print hr(),
end_html;