Thread SendMail-Attachment: ?!: Attachment mit Perl (25 answers)
Opened by soilant at 2004-08-07 17:43

Dubu
 2004-08-10 02:05
#3365 #3365
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ich fand die Doku von MIME::Lite auch ganz verstaendlich. Im Wesentlichen braucht man nur das, was auf den ersten zwei Seiten steht. :)

Aber hier mal ein Beispiel: Eine Mail per Browser empfangen (Code geklaut aus den Beispielen zu CGI.pm) und per MIME::Lite verschicken:
Code: (dl )
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
#!/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;

View full thread SendMail-Attachment: ?!: Attachment mit Perl