Munpack और utf-8 filenames अटैचमेंट्स में


1

मुझे एक और UTF-8 समस्या है। मैं munpack -C $extrdir $fileस्वचालित रूप से उन ईमेल से JPG फाइलें निकालने के लिए उपयोग करता हूं जो मुझे प्राप्त हुए थे fetchmail। बाद में मैं उन चित्रों का उपयोग करता हूं bashऔर imagemagickसंसाधित करता हूं जिन्हें मैं प्राप्त कर सकता हूं find -iname "*.jpg*" -o -iname "*.jpeg*" -o -iname "*.JPEG*" -o -iname "*.JPG*"। यह अधिकांश छवियों के लिए ठीक काम करता है, जब तक कि कोई स्थान या विशेष वर्ण फ़ाइल नाम में नहीं जोड़े जाते।

ईमेल सोर्सकोड में फ़ाइल नाम के रूप में लिखा गया है

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

munpackफ़ाइल को इस रूप में सहेजें

=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX=

मैं जोड़ सकता "*XUTF*"था find, लेकिन तब txt- फाइल जैसे अन्य प्रकार के अटैचमेंट को भी संसाधित किया जा सकता था imagemagickmunpackइसके स्थान पर "?" "X" के साथ, यही कारण है कि मैं फ़ाइल नाम को डिकोड नहीं कर सकता।

क्या आपके पास इस समस्या का हल है?

अग्रिम में धन्यवाद!

जवाबों:


0

यह वर्कअराउंड मेरे लिए किया है। दुर्भाग्य से, फ़ाइल नाम खो गए हैं। लेकिन वह नहीं था जो मैं था।

munpackकिसी फ़ाइल में आउटपुट का उपयोग और पाइप करें :

munpack -C $extrdir $file > attachments

attachementsफ़ाइल की सामग्री अब आप देखेंगे कि क्या निकाला गया था:

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

अब प्रत्येक लाइनों के माध्यम से लूप करें, जांचें कि क्या यह एक चित्र है और उनका नाम बदलें:

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

निर्देशिका में आउटपुट तब होगा:

attach_1.jpg
attach_2.jpg
attach_3.jpg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.