Frage

Ich habe einen E-Mail-Betreff der Form:

=?utf-8?B?T3.....?=

Der Körper der E-Mail ist utf-8 Base64 codiert - und decodiert in Ordnung. Ich aktuelle Perl E-Mail :: MIME-Modul der E-Mail zu entschlüsseln.

Was ist die Bedeutung des = utf-8-Begrenzer und wie kann ich extrahieren Informationen aus dieser Zeichenfolge?

War es hilfreich?

Lösung

Die encoded-word Token (per RFC 2047 ) in Werte einiger Header auftreten können. Sie analysiert werden, wie folgt:

=?<charset>?<encoding>?<data>?=

Charset UTF-8 ist in diesem Fall die Codierung B ist, was bedeutet, Base64 (Die andere Option ist, die Druckmittel Q Zitiert).

Um es zu lesen, zuerst die Base64 dekodieren, dann behandeln sie als UTF-8-Zeichen.

Lesen Sie auch die verschiedenen RFCs Internet Mail für weitere Informationen, vor allem RFC 2047 .

Da Sie Perl verwenden, Encode :: MIME :: Kopf könnte von nutzen sein:

  

SYNTAX

use Encode qw/encode decode/;
$utf8   = decode('MIME-Header', $header);
$header = encode('MIME-Header', $utf8);
     

ABSTRACT

     

Dieses Modul implementiert RFC 2047 Mime   Header-Codierung. Es gibt 3-Variante   Codierungsnamen; MIME-Header-, MIME-B   und MIME-Q. Der Unterschied ist   unter

beschrieben      
              decode()          encode()  
MIME-Header   Both B and Q      =?UTF-8?B?....?=  
MIME-B        B only; Q croaks  =?UTF-8?B?....?=  
MIME-Q        Q only; B croaks  =?UTF-8?Q?....?=

Andere Tipps

Ich denke, dass der Encode-Modul behandelt, dass mit der MIME-Header Codierung, dies so versuchen:

use Encode qw(decode);
my $decoded = decode("MIME-Header", $encoded);

Schauen Sie sich RFC2047 . Die ‚B‘ bedeutet, dass der Teil zwischen den letzten zwei ‚?‘ S ist Base64-kodiert. Die ‚UTF-8‘ natürlich bedeutet, dass die decodierten Daten sollten als UTF-8 interpretiert werden.

MIME :: Wörter von MIME-Tools arbeiten zu gut für diese. Ich lief in einige Probleme mit Encode und fand MIME :: Wörter auf einigen Streichern gelang es dem Encode nicht.

use MIME::Words qw(:all);
$decoded = decode_mimewords(
    'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>',
);

Dies ist eine Standard-Erweiterung für charset Kennzeichnung von Headern, angegeben in RFC2047 .

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