
ich habe ein weiteres UTF-8-Problem. Ich verwende munpack -C $extrdir $file
zum automatischen Extrahieren von JPG-Dateien aus E-Mails, die ich mit erhalten habe fetchmail
. Anschließend verwende ich bash
und imagemagick
zum Verarbeiten von Bildern, die ich mit erhalten kann find -iname "*.jpg*" -o -iname "*.jpeg*" -o -iname "*.JPEG*" -o -iname "*.JPG*"
. Das funktioniert für die meisten Bilder einwandfrei, solange dem Dateinamen keine Leerzeichen oder Sonderzeichen hinzugefügt werden.
Im E-Mail-Quellcode wird der Dateiname wie folgt geschrieben:
Content-Disposition: attachment; filename="=?UTF-8?B?V2FuZGVydW5nIFNwaWVsd2VnIDIuSlBH?="
. munpack
speichern Sie die Datei unter
=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX=
Ich könnte "*XUTF*"
zu hinzufügen, aber dann könnten auch find
andere Arten von Anhängen wie TXT-Dateien von verarbeitet werden . ersetzt auch „?“ durch „X“, weshalb ich die Dateinamen nicht dekodieren kann.imagemagick
munpack
Haben Sie eine Lösung für dieses Problem?
Dank im Voraus!
Antwort1
Dieser Workaround hat bei mir geholfen. Leider gehen die Dateinamen verloren. Aber das war nicht das, wonach ich suchte.
Verwenden Sie munpack
die Ausgabe und leiten Sie sie in eine Datei weiter:
munpack -C $extrdir $file > attachments
Der Inhalt der attachements
Datei wird Ihnen nun angezeigt, was extrahiert wurde:
=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDExLkpQRw==X= (image/jpeg)
=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDE3LkpQRw==X= (image/jpeg)
...
Gehen Sie nun jede Zeile durch, prüfen Sie, ob es sich um Bilder handelt, und benennen Sie sie:
while read p; do
if [[ $p == *"image"* ]]
then
FLNM=attach_${num}.jpg
IFS=' (' read -a array <<< "$p"
mv "${array[0]}" "$FLNM"
fi
num=$((num + 1))
done <attachements
Die Ausgabe im Verzeichnis lautet dann:
attach_1.jpg
attach_2.jpg
attach_3.jpg