Hallo,
also habe jetzt mal etwas gefunden und es an meine Bedürfnisse angepasst. Jedoch habe ich noch ein Problem. Ich erhalte immer mindestens 3 Dateien. Eine davon ist die gewünschte CSV Datei und die anderen beiden sind eine TXT und eine HTML Datei. Nun möchte ich nur die CSV Datei behalten bzw. aus der Mail Parsen.
Ich habe gesehen, das man mit purge die gespeicherten Dateien löschen kann, jedoch werden damit alle Dateien gelöscht. Will aber die CSV behalten. Habt ihr eine Idee wie man das purge einsetzen kann, damit nur die TXT und HTML Dateien gelöscht werden?
Anbei das Script:
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
66
67
68
69
70
71
72
73
74
use strict;
use MIME::Parser;
die "Usage makeCSV Filename\n" if $#ARGV != 0;
my $infile = $ARGV[0];
my $top_entity;
my $pfad = "/csv";
my $prefix = "Message";
my $filename;
$top_entity = &parse_MIME_Stream($infile);
&walk($top_entity);
exit;
sub parse_MIME_Stream
{
my $file = shift;
my $parser = '';
die "NO FILE $!" unless defined $file;
$parser = MIME::Parser->new();
$parser->output_to_core('NONE');
$parser->output_dir($pfad);
$parser->output_prefix($prefix);
open(INPUT,$file) or die $!;
my $top_entity = $parser->read(\*INPUT);
close(INPUT) or die $!;
return $top_entity;
}
sub walk
{
my $entity = shift if @_;
return unless defined $entity;
my $head = $entity->head();
if ($head->mime_type() =~ m/multipart/i)
{
my $i;
my $num_alt_parts = $entity->parts();
my $current_entity;
for ($i = 0; $i < $num_alt_parts; $i++)
{
$current_entity = $entity->parts($i);
&walk($current_entity);
}
}
else
{
&handle_head($head) if (defined $head);
}
}
sub handle_head
{
my $current_head = shift;
$current_head->decode;
$current_head->unfold;
if ( $current_head->recommended_filename() =~ m/\.csv/i )
{
print $current_head->recommended_filename()."\n";
}
}
INFO: Ich lasse den Dateinamen der CSV Datei ausgeben, da ich diesen für ein anderes Script benötige.
INFO: Habe
nicht benutzt da ich laufend eine Warnmeldung bekomme, jedoch kann ich diese nicht abstellen / beheben.
Gruß