Thread CSV Datei aus Mail extrahieren: Mail base64 codiert
(4 answers)
Opened by krusty at 2007-05-04 15:16
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: 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 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 #!/usr/bin/perl 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; # Datei mit MIME-Nachricht einlesen und parsen $top_entity = &parse_MIME_Stream($infile); # MIME-Nachricht rekursiv durchlaufen &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 #(Entity) { my $entity = shift if @_; return unless defined $entity; my $head = $entity->head(); if ($head->mime_type() =~ m/multipart/i) { # mehrteilige Nachricht my $i; my $num_alt_parts = $entity->parts(); my $current_entity; # alle Teile der Nachricht rekursiv abarbeiten for ($i = 0; $i < $num_alt_parts; $i++) { $current_entity = $entity->parts($i); &walk($current_entity); } } else { # einteilige Nachricht &handle_head($head) if (defined $head); } } sub handle_head #(Header) { 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 Code (perl): (dl
)
use warnings; Gruß |