Thread Mail-Body dekodieren (15 answers)
Opened by Quenten at 2005-03-29 18:50

Dubu
 2005-03-30 17:26
#53041 #53041
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Quenten,29.03.2005, 16:50]1) Wie kodiert man am besten eine eMail. Ist das auf der genannten Seite die beste Möglichkeit?
[/quote]
Nein, MIME::Parser hat alles noetige schon eingebaut. Wenn eine Mail einen MIME-Part enthaelt, wird dieser vom Parser als MIME::Entity geliefert. In perldoc MIME::Entity kann man nachschauen, wie man an den dekodierten Inhalt kommt.

Hier mal ein kurzes Beispiel. Es wird evtl. nicht mit allen Kombinationen (insbes. eingebetteten "message/rfc-822" Teilen) klar kommen, aber als "Proof of Concept" hilft es vielleicht:
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
#!/usr/bin/perl
use strict;
use warnings;
use MIME::Parser;

# In dieser Datei liegt der Quelltext der Mail
my $mimemail = 'mimemail.txt';

# Parser anlegen
my $parser = MIME::Parser->new() or die "cannot create parser object: $!";

# Mail parsen, MIME::Entity zurueck erhalten
my $entity = $parser->parse_open($mimemail) or die "cannot parse $mimemail: $!";

# Gibt es mehrere Parts?
my @parts = $entity->parts();
# Wenn nicht, nimm $entity selber als Part
push @parts, $entity unless @parts;

# Dekodiere alle Parts
my $num = 1;
for my $part (@parts) {
   print "### Teil $num hat den Typ ", $part->effective_type(), "###\n";
   print "### Header von Teil $num ###\n", $part->head()->as_string, "### Ende Header Teil $num ###\n";

   # bodyhandle() liefert uns ein MIME::Body Objekt mit dem Inhalt des Parts
   my $bh = $part->bodyhandle();
   unless ($bh) {
       print "### Teil $num hat keinen Body ###\n";
   }
   print "### Dekodierter Inhalt Teil $num ###\n", $bh->as_string, "### Ende Teil $num ###\n";
   ++$num;
}


Quote
2) Welche Kodierungs-Verfahren gibt es und kann man überhaupt alles abfangen?

Gebraeuchlich sind die genannten, Base64 und Quoted Printable.

Quote
3) Wenn ich das Kodierungsverfahren "QuotedPrintable" bei einer 7-bit Verschlüsselung (also mit ASCII Zeichensatz) anwende (im Beispiel ist 8-bit angegeben), kriege ich trotzdem kein brauchbares Ergebnis. Was muss ich ändern?

Das ist ja schon oben beantwortet worden.

View full thread Mail-Body dekodieren