Thread Datei mit unbekannter Extension suchen...: ...und mit MIME:Lite verschicken (18 answers)
Opened by cbxk1xg at 2004-06-06 23:07

cbxk1xg
 2004-06-06 23:07
#2761 #2761
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Hallo Freunde der Sonne,

ich hab folgendes kleines Problem. Bei meinem Uploadscript wird eine SessionID erzeugt und die hochgeladene Datei bekommt so z.B. den Namen 74535.jpg oder 74535.pdf, 74535.zip, etc. Da ich nun nicht weiss, welche Extension die Datei wirklich hat hilft mir ein einfaches -e leider nicht weiter. (Das Uploadscript ist getrennt vom E-Mailscript.)

Ich will diese Datei dann per E-Mail mit MIME:Lite verschicken und nach dem erfolgerichen verschicken löschen. Letzteres sollte mit unlink kein Problem sein. Aber ich bin mir auch nicht sicher, ob MIME:Lite die Datei richtig encodet.

Bisher habe ich folgendes:
Code (perl): (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
$msg = MIME::Lite->new( 
        From    =>"$CompanyName <$CompanyEmail>",
        To      =>"$CompanyName <$CompanyEmail>",
        Cc      =>'',
        Subject =>"Nachricht von $company",
        Type    =>'multipart/mixed'
        );

$msg->attach(Type => 'text/html',
Data => qq
{
blah, blah... siehe Anhang.
}
);


# Verzeichnis öffnen und Inhalt in @files speichern
opendir DIR, "$TEMP_DIR/" or &file_error("Unable to open directory. $!");
readdir DIR for 0 .. 1;
@files = grep -f "$TEMP_DIR/$_", readdir DIR;
closedir DIR;

# Datei in @files suchen
        foreach $_ (@files)
        {
        $AttachentFile = (split /\./, $_)[0];
        grep /$AttachentFile/i, @files;
        }

# Extension von der gesuchen Datei bestimmen.
my $ext = (split /\./, $AttachentFile)[1];

my $MailAttachment = "$TEMP_DIR/$SessionID$ext";
if (!-e $MailAttachment) {&program_error("Keine Datei vorhanden. $!");}

# Das sollte den Content-type selbständig bestimmen.
$MIME::Lite::AUTO_CONTENT_TYPE = 1;

# Attachment anängen, umbennen, Mail abschicken.
$msg->attach(
        Type        =>'auto',
        Path        =>"$MailAttachment",
        Filename    =>"picture$ext",
        Disposition =>'attachment'
        );

$msg->send;

View full thread Datei mit unbekannter Extension suchen...: ...und mit MIME:Lite verschicken