هل يمكنني تحليل بريد إلكتروني تم حفظه كملف نصي واسترداد/حفظ مرفقه باستخدام Perl؟

StackOverflow https://stackoverflow.com/questions/4306056

سؤال

أنا أستخدم بيرل & البريد :: imapclient لحفظ رسائل البريد الإلكتروني من Gmail كما .txt الملفات باستخدام طريقة imapclient:

message_to_file

يبدو أن هذه الملفات تحتوي على مرفقات رسائل البريد الإلكتروني المشفرة كنص.

إليك بعض الملف النصي:

--0015174c1274ee7ca60495ca69d5
Content-Type: video/3gpp; name="20101112233055.3gp"
Content-Disposition: attachment; filename="20101112233055.3gp"
Content-Transfer-Encoding: base64
X-Attachment-Id: 1353288501407252480-1

AAAAHGZ0eXAzZ3A0AAADADNncDRtcDQxM2dwNgAFHyltZGF0AAABthAwrMK9/Mue7fM+95wsf9P8
WI7mPzzp/ikijbucv72j7OywVGuh5kBzo89Zra6PihxZg0zadDqihZFpsPJeG36Ihk9qZW+LLQ2u
NEd96vsqgpnLFnhhwGBWgL2Xpt0cXkW....[A LOT MORE CHARS]....AAAQAAAALAAAAAQAAABRzdHN6
AAAAAAAAACAAAAChAAAAIHN0Y28AAAAAAAAABAABHNoAASMaAALYFwAFHeU=
--0015174c1274ee7ca60495ca69d5--

لا يمكنني العثور على أي طريقة من شأنها أن تنقذ المرفق بشكل منفصل. هل هناك أي طريقة للقيام بذلك عن طريق التحليل؟

هل كانت مفيدة؟

المحلول

ما لديك هناك هو النص الخام لرسالة بريد إلكتروني مشفرة. معظم اللغات لديها مكتبة MIME للأغراض العامة لتحليلها. يكشف بحث سريع على CPAN ذلكMIME :: Parser قد تفعل الحيلة:

use MIME::Parser;

open(FH, '/var/tmp/test.txt');
my $parser = new MIME::Parser;
my $entity = $parser->parse(\*FH) or die;

$entity->dump_skeleton;

سيؤدي ذلك إلى تفريغ الأجزاء المختلفة من البريد الإلكتروني المخزنة في اختبار الملف النصي العادي إلى /var /tmp. تحقق من MIME :: محلل مستندات لمزيد من الخيارات.

نصائح أخرى

هذا هو اقتراح لحل. سوف تشارك هذا المنطق بعد أن تجاوزت الرؤوس.

use MIME::Base64;

my $attachlines = '';
while ( <$input> ) { 
    last if index( $_, '--0015174c1274ee7ca60495ca69d5--' ) == 0;
    $attachlines .= $_;
}

my $attach = MIME::Base64::decode( $attachlines );

ملحوظة: أعتبر من المسلم به أنك تعرف كيف تعمل النماذج متعددة الأجزاء MIME ، لذلك لا أناقش كيفية الحصول على المقسم برمجيًا '--0015174c1274ee7ca60495ca69d5--'.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top