Kann ich eine E-Mail gespeichert als Textdatei und Abrufen / Speichern seiner Befestigung mit Perl analysieren?

StackOverflow https://stackoverflow.com/questions/4306056

Frage

Ich bin mit Perl & MAIL :: IMAPClient E-Mails von Google Mail als .txt Dateien mit der IMAPClient Methode speichern:

message_to_file

Diese Dateien scheinen die Anhänge von E-Mail als Text codiert zu enthalten.

Hier einige der Textdatei:

--0015174c1274ee7ca60495ca69d5
Content-Type: video/3gpp; name="20101112233055.3gp"
Content-Disposition: attachment; filename="20101112233055.3gp"
Content-Transfer-Encoding: base64
X-Attachment-Id: 1353288501407252480-1

AAAAHGZ0eXAzZ3A0AAADADNncDRtcDQxM2dwNgAFHyltZGF0AAABthAwrMK9/Mue7fM+95wsf9P8
WI7mPzzp/ikijbucv72j7OywVGuh5kBzo89Zra6PihxZg0zadDqihZFpsPJeG36Ihk9qZW+LLQ2u
NEd96vsqgpnLFnhhwGBWgL2Xpt0cXkW....[A LOT MORE CHARS]....AAAQAAAALAAAAAQAAABRzdHN6
AAAAAAAAACAAAAChAAAAIHN0Y28AAAAAAAAABAABHNoAASMaAALYFwAFHeU=
--0015174c1274ee7ca60495ca69d5--

Ich kann keine Methode finden, die die Anlage separat zu sparen. Gibt es eine Möglichkeit, dies zu tun über das Parsen?

War es hilfreich?

Lösung

Was du hast, gibt es den Rohtext eine MIME-codierte E-Mail-Nachricht. Die meisten Sprachen haben eine allgemeine Zweck MIME-Bibliothek diese für die Analyse. Eine schnelle Suche auf CPAN zeigt, dass MIME :: Parser könnte den Trick tun :

use MIME::Parser;

open(FH, '/var/tmp/test.txt');
my $parser = new MIME::Parser;
my $entity = $parser->parse(\*FH) or die;

$entity->dump_skeleton;

Damit werden die verschiedenen Teile der E-Mail in der Klartextdatei gespeichert Dump text.txt in / var / tmp. Schauen Sie sich die MIME :: Parser-Dokumentation für weitere Optionen.

Andere Tipps

Dies ist ein Vorschlag für eine Abhilfe. Sie würden diese Logik engagieren, nachdem Sie vorbei an den Überschriften waren.

use MIME::Base64;

my $attachlines = '';
while ( <$input> ) { 
    last if index( $_, '--0015174c1274ee7ca60495ca69d5--' ) == 0;
    $attachlines .= $_;
}

my $attach = MIME::Base64::decode( $attachlines );

Hinweis . Ich nehme selbstverständlich, dass Sie wissen, wie MIME mehrteilige Formulare arbeiten, so dass ich nicht diskutieren, wie programmatisch den Teiler '--0015174c1274ee7ca60495ca69d5--' bekommen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top