Munpack- und Utf-8-Dateinamen in Anhängen

998
Markus

Ich habe ein anderes UTF-8-Problem. Ich verwende munpack -C $extrdir $fileautomatisch JPG-Dateien aus E-Mails, die ich erhalten habe fetchmail. Danach verwende ich bashund imagemagickverarbeite Bilder, die ich bekommen kann find -iname "*.jpg*" -o -iname "*.jpeg*" -o -iname "*.JPEG*" -o -iname "*.JPG*". Dies funktioniert gut für die meisten Bilder, solange dem Dateinamen keine Leerzeichen oder Sonderzeichen hinzugefügt werden.

Im E-Mail-Quellcode wird der Dateiname als geschrieben

Content-Disposition: attachment; filename="=?UTF-8?B?V2FuZGVydW5nIFNwaWVsd2VnIDIuSlBH?=" 

. munpackSpeichern Sie die Datei als

=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX= 

Ich könnte hinzufügen "*XUTF*"zu find, aber dann andere Arten von Attachements wie txt-Dateien können durch verarbeitet werden imagemagickals gut. munpackersetzt auch "?" Mit "X" kann ich deshalb die Dateinamen nicht entschlüsseln.

Haben Sie eine Lösung für dieses Problem?

Danke im Voraus!

1

1 Antwort auf die Frage

0
Markus

Diese Problemumgehung hat es für mich getan. Leider gehen die Dateinamen verloren. Aber danach war ich nicht.

Verwenden munpackund leiten Sie die Ausgabe in eine Datei:

munpack -C $extrdir $file > attachments 

Den Inhalt der attachementsDatei sehen Sie jetzt, was extrahiert wurde:

=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDExLkpQRw==X= (image/jpeg) =XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDE3LkpQRw==X= (image/jpeg) ... 

Nun durchlaufen Sie jede der Zeilen, überprüfen Sie, ob es sich um Bilder handelt, und benennen Sie sie um:

while read p; do if [[ $p == *"image"* ]] then FLNM=attach_$.jpg IFS=' (' read -a array <<< "$p" mv "$" "$FLNM" fi num=$((num + 1)) done <attachements 

Die Ausgabe im Verzeichnis lautet dann:

attach_1.jpg attach_2.jpg attach_3.jpg