Thread Problem beim auslesen von Mails mit Perl Scritp (1 answers)
Opened by krusty at 2006-09-29 11:00

krusty
 2006-09-29 11:00
#70399 #70399
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

habe folgendes Problem:
Ich rufe Mails mit einer CSV Datei im Anhang per Script ab. Teilweise sind die Mails mit base64 verschlüsselt und teilweise im Klartext.
Nun will ich die CSV Datei aus der Mail lösen und in einer seperaten Datei speichern. Hier ist mein Problem. Wenn Sie im Klartext übermittelt wird ist das kein Problem. Dann suche ich jede Zeile nach einem bestimmten Muster ab und alles was folgt wird in eine neue Datei geschrieben.

Wenn ich eine base64 codierte Mail erhalte kann ich diese auch mittels Modul MIME::base64 umwandeln. Leider kann ich dabei nicht einfach nach einer Zeile suchen und ab dann beginnen, zumindest habe ich das noch nicht hin bekommen. Gibt es in Perl eine Möglichkeit zu sagen, suche mir diese Zeile und schneide diese und die folgenden vier zeilen aus? Den rest soll das Script dann wieder in eine Datei speichern.

Könnt ihr mir vielleicht helfen? Für jeden Tipp bin ich euch dankbar.
Gruß

Mein script sieht momentan so aus:
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
#!/usr/bin/perl -w
use MIME::QuotedPrint;
use MIME::Base64;

die "Usage make_csv.pl Filename\n" if $#ARGV != 0;

my $datafile = $#ARGV[0];
my $doEncode = 0;

open(DATA, $datafile) || die "Cannot open file!\n";
while (<DATA>)
{
if ( /^Hier beginnt die csv Datei;/ )
{
$doEncode = 1;
}
if ( $doEncode == 1 )
{
if ( $_ =~ /^---/ )
{
next;
}
elsif ( $_ =~ /^\s$/ )
{
next;
}
else
{
$zeile = decode_qp($_);
print $zeile;
}
}
if ( /^Content-Transfer-Encoding: base64/ )
{
$doEncode=2;
}
if ($doEncode==2)
{
$var = decode_base64($_);
if ( $var =~ /Hier beginnt die CSV Datei;/ )
{
print $var;
}
}
}
close (DATA);

View full thread Problem beim auslesen von Mails mit Perl Scritp