التعامل مع الرسائل المشفرة باستخدام Python وimaplib

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

  •  20-12-2019
  •  | 
  •  

سؤال

خلال الأيام القليلة الماضية، كنت أعمل على كتابة برنامج نصي يقوم بتوزيع تذاكر مكتب المساعدة التي يتم إنشاؤها تلقائيًا ويخزن محتوياتها في قاعدة بيانات.أثناء الاختبار، واجهت العديد من رسائل البريد الإلكتروني التي يبدو أنها مشفرة وتتسبب في فشل البرنامج النصي.فيما يلي مثال لأحد RFC822s:

"[(b'9255 (RFC822 {12558}', b'تم التسليم إلى:XXXXXXXXX تم الاستلام:بواسطة 10.220.77.132 بمعرف SMTP g4csp176213vck; الاثنين، 28 يوليو 2014 09:37:05 -0700 (PDT) X-تم الاستلام:بحلول 10.67.30.130 بمعرف SMTP ke2mr39896936pad.44.1406565425185; الاثنين، 28 يوليو 2014 09:37:05 -0700 (PDT) مسار العودة: تم الاستلام:من XXXXXXXXX (XXXXXXXXX [74.125.149.112]) بواسطة XXXXXXXXX بمعرف SMTP yh3si18379315pab.170.2014.07.28.09.37.04 لـ ; الاثنين، 28 يوليو 2014 09:37:04 -0700 (PDT) تم الاستلام-SPF:لا يوجد (XXXXXXXXX:XXXXXXXXX لا يعين مضيفي المرسل المسموح بهم) client-ip=74.125.149.141; نتائج المصادقة:XXXXXXXXX; spf=محايد (XXXXXXXXX:لا يقوم XXXXXXXXX بتعيين مضيفي المرسل المسموح بهم) v تم التلقي:من XXXXXXXXX ([74.125.149.141]) بواسطة XXXXXXXXX ([74.125.148.10]) مع SMTP؛ الاثنين، 28 يوليو، 2014 الساعة 16:37:04 بتوقيت جرينتش تم الاستلام:من XXXXXXXXX ([209.85.213.178]) (باستخدام TLSv1) بواسطة XXXXXXXXX ([74.125.148.12]) مع SXXXXXXXXX؛الإثنين، 28 تموز (يوليو) 2014 الساعة 09:37:04 بتوقيت المحيط الهادئ تم الاستلام:بواسطة XXXXXXXXX بمعرف SMTP uq10sf3897971igb.11 لـ ؛الإثنين، 28 تموز (يوليو) 2014، الساعة 09:37:03 -0700 (توقيت المحيط الهادئ الصيفي) X-Google-DKIM-Signature:الخامس=1;أ=rsa-sha256;c=relaxed/relaxed; d=1e100.net;s=20130820; h=x-gm-message-state:mime-version:from:to:date:subject:message-id :x-original-sender:x-original-authentication-results :الأسبقية :قائمة بريدية:list-id:list-post:list-help:list-archive :list-unsubscribe:content-type:content-transfer-encoding; bh =H+FlcmWQAFURCHnDFK/bNHUOvofUAPB8bcDYlBceyxE=; b=LoR8D1MK8eoDG9DLkP9gkfR82+EGUIEeOTLpqymqxyx9HJl0C9BW6iwPD7OgrJFbV4 xWYumML6RCinpcZc4d6VCDSw+ak XLdhiol+lbWJBZWvgN4BQPgHJwCF6EaHYf3h8j4tq /KAZIkXowz4/WKW8STri4BVjlA2a4LPwV/wazP+I9Kvr1yz433ymd+iCY1V0NexTI+cb 9m3IyL8sqB0+Efyu+XQrR 2y7ZdXDPwdzGS /WNHJBtKga5xPDtPga+21pozVMCbuCc/cj Cx9me6cVo19PrNKIOtSimDZ1u6ELdpVr4iprYQSaT8arYYiCPHJE34OFPlqspTxjm1eI ngyg== X-Gm-Message-State:ALoCoQkb908wRLWedDE+CtRzjD6VwC6Nja6duttyoVAdf+TFFn+uCxFB0Kwd5jk411YWdMD2G6HuFeRj2y3q7EzTe/vTvPLfymDIkHwZQa1r1zQ8I1B254t6v01ourR8InF/41aPGnnD تم استلام X:بحلول 10.42.48.74 بمعرف SMTP r10mr26049776icf.18.1406565423564; الاثنين، 28 يوليو 2014 09:37:03 -0700 (PDT) X-تم الاستلام:بواسطة 10.42.48.74 بمعرف SMTP r10mr26049775icf.18.1406565423537; الإثنين، 28 يوليو 2014 09:37:03 -0700 (PDT) X-Beenhere:XXXXXXXXX تم الاستلام:بواسطة 10.50.153.15 بمعرف SMTP VC15ls1961411igb.42.gmail؛الاثنين، 28 يوليو 2014 09:37:03 -0700 (توقيت المحيط الهادئ الصيفي) تم الاستلام X:بواسطة 10.66.254.37 بمعرف SMTP af5mr39703901pad.113.1406565423331; الاثنين، 28 يوليو 2014 09:37:03 -0700 (PDT) تم الاستلام:من XXXXXXXXX (XXXXXXXXX [74.125.149.158]) بواسطة XXXXXXXXX بمعرف SMTP da9si9190520pdb.425.2014.07.28.09.37.02 لـ ; الاثنين، 28 يوليو 2014 09:37:03 -0700 (PDT) تم الاستلام-SPF:لا يوجد (XXXXXXXXX:XXXXXXXXX لا يعين مضيفي المرسل المسموح بهم) client-ip=207.211.31.47; تم الاستلام:من XXXXXXXXX ([207.211.31.47]) بواسطة XXXXXXXXX ([74.125.148.10]) مع SMTP؛ الاثنين، 28 يوليو، 2014 الساعة 16:37:02 بتوقيت جرينتش تم الاستلام:من XXXXXXXXX (XXXXXXXXX [129.135.112.43]) (باستخدام TLS) بواسطة XXXXXXXXX؛الاثنين، 28 يوليو 2014 12:37:01 -0400 تم الاستلام:من XXXXXXXXX (129.135.128.210) بواسطة XXXXXXXXX (129.135.112.45) بمعرف خادم Microsoft SMTP 14.3.181.6؛الإثنين، 28 تموز (يوليو) 2014 11:36:58 -0500 تم الاستلام:من ITSDC50 ([127.0.0.1]) بواسطة XXXXXXXXX مع Microsoft SMTPSVC(6.0.3790.4675); الإثنين، 28 يوليو، 2014 11:36:58 -0500 MIME-Version:1.0 من: إلى: التاريخ:الاثنين، 28 يوليو 2014 11:36:58 -0500 الموضوع:إرسال حالة تكنولوجيا المعلومات/العناية:SC-118656-7031 معرّف الرسالة: X-OriginalArrivalTime:28 يوليو 2014 16:36:58.0498 (UTC) FILETIME=[26792E20:01CFAA82] X-MC-Unique:114072812370105901 مستويات-pstn:(S:85.19264/99.90000 CV:99.9000 FC:95.5390 LC:95.5390 R:95.9108 P:95.9108 M:97.0282 C:98.6951 ) X-pstn-dkim:تم تخطي 0:غير ممكن إعدادات-pstn:1 (0.1500:0.1500) cv gt6 gt5 gt4 gt3 gt2 gt1 X-pstn-address:من [1094/49] X-pstn-nxpr:disp=محايد، envrcpt=XXXXXXXXX X-pstn-nxp:bodyHash=9500f76054cf97c2a0eec20f8940768958faf6c3, headerHash=eb9362a172738328a8b8a8ae406c42a63f5545f9, keyName=4, rcptHash=e0dd4695780dcb1818e78b482 447ac976870bcbe، المصدر = 207.211.31.47، الإصدار = 1 X-Original-Sender:XXXXXXXXX نتائج-مصادقة-X الأصلية:XXXXXXXXX;spf=محايد (XXXXXXXXX:لا يقوم XXXXXXXXX بتعيين المرسل المسموح المضيفين) smtp.mail=XXXXXXXXX الأسبقية:القائمة القائمة البريدية:القائمة XXXXXXXXX جهة الاتصال XXXXXXXXX معرّف القائمة: معرف-X-Google-Group:511158325204 نشر القائمة:, تعليمات القائمة:, أرشيف القائمة: إلغاء الاشتراك في القائمة:, نوع المحتوى:نص عادي؛مجموعة الأحرف=UTF-8 ترميز نقل المحتوى:base64 X-pstn-نبتون:0/0/0.00/0 مستويات X-pstn:(S:65.87536/99.90000 CV:99.9000 FC:95.5390 LC:95.5390 R:95.9108 P:95.9108 M:97.0282 C:98.6951 ) X-pstn-dkim:تم تخطي 0:غير ممكن إعدادات-pstn:5 (2.0000:0.0200) s cv fc lc gt6 gt5 gt4 GT3 gt2 gt1 ft lt r p m c X-pstn-addresss:من [db-null] X-pstn-nxpr:disp=محايد، envrcpt=XXXXXXXXX X-pstn-nxp:bodyhash = 45f4f2e5900519979105b3d1f937e1d3fb7d7ca ، headerhash = ca981838d5783da04d9d38e3ffc3f5907100fcf ، keyname = 4 ، 25f49c4a45f4 ، sourceip = 74.125.149.141 ، الإصدار = 1 r n n 1Loiagicagicagsenseie1hbm9yy2fyzq0ku2l0zsbo r nyw1loiagicagicagicagmzaxdqpdbgllbnqgtmftztogicagicagicbbbbwfuzgegugvucm9 BNYWLSUGF0ADOGICAGIGFTYW5KYS5W R NZW5YB2RAAGNYLW1HBM9YY2FYZS5JB20NCKNHC2UGUHJVZHVJDDOGICAGIAGIEHDUI1GAWVS r nzcbezxb3ltzw50dqpdyxnlietlexdvcmq6icagicagicbgrc1bu0qncg0kdqonclbszwfz r nbg0kioqioQkioQkioQKioQKioQKioQKioQKioQKioQKioQKioQKioQKioQkioQkioQ r nkioqkiOQKIONCJW8LSBUAGLZIENHHK2UGAXMITDDWITQUTBVZBVZBVZBVZBVZBVDVZBVDW nmtcgic0+pg0kdqpqbgvhc2ugzglzcgf0y2ggd2lyaw5nihrly2ggdg8gaw5zdgfsbcb0d28g r nbmv3ig5ldhdvcmsgzhmuie9 sbhbmqg r nb25ligluihrozsbdyxnlie1hbmfnzw1lbnqgt2zmawnldqoncxvy2f0aw9uig9migryb3ag r naxm6icagie51cnnlie ie9mzmlj r nzq0kughvbmugrxh0ichjzibqag9uzsbecm9wktogbi9hdqonck9ubhkgq2f0nwugugxlbnvt iefkzgluzybs r nywnld2f5l1dpcmvtb2xkiglzig5vdcbhbibvchrpb24gd2l0ag91dcbwcmlvcibhchbyb3zh lyxnlig5vdglmesb5b3vy r nigj1ewvyigfuzcbyzxf1zxn0ihrozxkgb2j0ywluigfwchjvdmfslibtaw5nbgugz2fuzybm r nywnllxbsyxrlihnob3vscbizb bu r nb3qgymugdxnlzcb1bmxlc3mgaw5zdgfsbgluzybhifdbucwgue9dihnjcmvlbiwgb3igz2l2 r nzw4gy3vzdg9tzxigyxbwcm9 ls0tls0tls0t r nls0tdqpxywxsiephy2sgqxjlytonckvhy2ggd2fsbcbqywnrihdpbgwgymugbgfizwxlzcbp 9zzxmudqpbbgwgbgfizwxzihdp r nbgwgymugy29tchv0zxigz2vuzxjhdgvklg0kvghligxhymvsaw5nihnlcxvlbmnlihdpbgwg r bmvslcbqyxrjacbqyw5lbcbqb3j0li4udqpf r negftcgxlig9mighvdybkcm9wihdvdwxkigjligxhymvszwq6idetqi0xlti0dqpuagugywjv r cmvzzw50oianciagicagq2xvc2v0idenciagicagumfjaybc r nia0kicagicbqyxrjacbqyw5lbcaxia0kicagicbqyxrjacbqyw5lbcbqb3j0idi0dqonckkr. TLS0TLS0TLS0TLS0TLS0TLS0TLS0TLS0TLS0TLS0T R ndqpfywnoifjhy2sgd2lsbcbizsbsywjlbgvkiokanensb3nldcb4ifjhy2sgeekansaoeca9 nreyjmsxldgpigkypiVhy2ggugf0y2gguzwzwgd2lsbcbizsbsywjlbgvkiokanfbhdgno nluy6ifn3axrjbblcbtd2l0y2ggqiwgzxrjli4udqoncklmifjhy2tzlcbqyxrjacbqyw5l r nbhmsigfuzcbzd2l0y2hlcybhdcb5bpmf0. vybhkg r nbgfizwxlzcwgcgxlixnlignhbgwgsu5huibjb250ywn0ihrvihbyb3blcmx5iglkzw5wz5 kzxigdg8gagf2zsb0 r nzwnobmljawfuihbyb3blcmx5igxhymvsigvhy2guielor1igdgvjacbjyw4gywxzbybozwxw ​​chblyxjzigz1bgwudqon r nclbhdgnoigryb3agznjvbsbwyxrjacbwyw5lbcb0bybmywnpbgl0esbzd2l0y2ggyw5kigzy r lihbhdgnoignhymxligzv r ndqoqkioqkkrbv eEgsk9cierftelWrvjbqKxfuyoQkioQoG0kls0tls0tls0tls0tls0tls0t r nls0tls0tls0tls0tls0 cbyzxn1bhrzichp r nzib5b3ugzg8gbm90iGhdMySbtywnoaw5lignhcgfibgugb2ygzg93bmxvywrpbmcgdgvz r b0zxn0zxigc2hvd2luzyb0 r nagugzhjvccbwyxnzzxmpigfuzcbhigrpz2l0ywwgcghvdg8gb2ygzwfjacbwcm9wzxjssb pdgfsihbob3rvig9mihbhdgnoihbhbmvs dc4ncg0kugxlixnlignhbgwgsu5huibjb250ywn0ihrv r nigrpc2n1c3mgyw55glzc3vlcyb3axroigpvyi4ncg0ksuygv09ssybjuybdqu5 uljjjvkfmifbmruftrsbpqlrbsu4gukvrvuvtveierftelw 1ntawigv4dc4gntexmsaobhvuy2ggmtowmhbtic0g r nMjowMHBtIEVTVCkNClJpY2sgWWFuY2V5IGF0IDgwMC02MDMtNTUwMCBleHQuIDUxMTUgKGx1rnbmNoIDI6MDBwbSAtIDI6MzBwbSBFU1QpDQpEb3VnIEpvaG5zb24gYXQgODAwLTYwMy01NTAwrnIGV4dC4gNTIwMg0KU3RldmUgSmFrdWJpayBhdCA4MDAtNjAzLTU1MDAgZXh0LiA1NDU2DQpMrnb2dhbiBIYWdhIGF0IDgwMC02MDMtNTUwMCBleHQuIDU0NzYNClRyYXZpcyBCYWlsZXkgYXQgrnODAwLTYwMy01NTAwIGV4dC4gNTIwOQ0KSXNhYWMgRGlja3NvbiBhdCA4MDAtNjAzLTU1MDAgrnZXh0LiA1MTk4DQoNCk9OTFkgSUYgWU9VIEFSRSBVTkFCTEUgVE8gUkVBQ0ggSU5HUiBjb250rnYWN0LCBhZnRlciBsZWF2aW5nIG1lc3NhZ2VzIGZvciBlYWNoIHBlcnNvbiBsaXN0ZWQgYWJvrndmUgYW5kIHdhaXRpbmcgNSBtaW51dGVzIGZvciBhIHJldHVybiBjYWxsLCBjb250YWN0Og0KrnVG9ueSBCdXRsZXIgYXQgODAwLTYwMy01NTAwIGV4dC4gNTE0MA0KQmFyYiBFZHdhcmRzIGF0rnIDgwMC00MjctMTkwMiBleHQuIDUxODMNCkRhdmUgSGlyZSBhdCA4MDAtNDI3LTE5MDIgZXh0rnLiA2NDE4DQoNCkFTRCBBZnRlciBIb3VycyBudW1iZXIgaXMgODI4LTYyNC0xMDk5IGFuZCBlrnbWFpbCBmb3IgdGhpcyBhY2NvdW50IGlzIHRlYW1pbnRlcmdyYXBoQGFzZC11c2EuY29tDQoNrnCjwwNy8yOC8xNCAxMTozNiBDYXNlIG9wZW5lZCBieTogIHJtYXJ0aW4gKDI1Nik3MzAtNTEx rnMT4NCg0KDQpQcm9ibGVtIFNvbHV0aW9uDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqrnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KUmVmZXJyZWQgZm9yIFJlc29sdXRprnb24gVG86IEFTRA0KPDA3LzI4LzE0IDExOjM2IENhc2UgZWRpdGVkIGJ5OiBybWFydGluICgyrnNTYpNzMwLTUxMTE+DQoqfip+Kn4qfip+Kn4qfip+Kn4qfip+Kn4qfip+Kn4qfip+Kn4qfip+rnKn4qfip+Kn4qfip+Kg0KDQoNCg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19frnX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19frnX19fX19fX19fX19fX19fX18NCk5vdGljZSByZXF1aXJlZCBieSBsYXc6ICBUaGlzIGVtYWlsrnIG1heSBjb25zdGl0dXRlIGFuIGFkdmVydGlzZW1lbnQgb3Igc29saWNpdGF0aW9uIHVuZGVy r nifuuuy4gbgf3iglmigl0cybwcmltyxj5ihb1cnbvc2ugaxmggdg8gywr2zxj0axnlig9yihby r nb21vdgugysbjbjb21tzxjjawfsihbyb2r1y3qgb3 qgb3. hvb3nl r nig5vdcb0byzwnlaxzligfkdmvydglzaw5nigfuzcbwcm9tb3rpb25hbcbtzxnzywdlcybm r ncm9tieftrcaozxhjzzxb0igzvcnkixt bmfnzxmgzw1h r nawwgchjlzmvyzw5jzxmggdghyb3vnacbhihnlcgfyyxrlihbyb2nlc3mpigf0ihroaxmggzw1h 0bybszwf2zw1lywxvbmva r nyxnklxvzys5jb20uicbjzib5b3ugzg8gc28sihrozsbzzw5kzxigb2ygdghpcyblbwfpbcb3 d2lsbcbub3qgymugy29udgfjdgvk r nigfnywluliagt3vyihbyaw5jaxbhbcbwb3n0ywwgywrkmvzcybpcya3nzugr29kzgfyzcbd r oncg == r n ') ، ب ')'] "

هل نص البريد الإلكتروني مشفر؟وإذا كان الأمر كذلك، كيف يجب أن أتعامل مع فك التشفير؟

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

المحلول

يتم تشفير الجسم (ترميز نقل المحتوى: Base64) وهو ما ليس هو نفسه مشفر.لصق المجموعة الأولى من الشخصيات في وحدة فك ترميز الإنترنت

giveacodicetagpre.

يحصل فك شفرة ك

giveacodicetagpre.

python لديه مكتبات ل فكيب base64، لكنني سأكون بخيبة أمل إذا لم يكن لدى IMAPLIB مبناية لتبسيط هذا.

نصائح أخرى

يمكنك استخدام ال email حزمة لهذا.لديك قائمة هناك، والعنصر الأول في القائمة عبارة عن صف، والعنصر الثاني هو رسالة البريد الإلكتروني بأكملها.لنفترض أن لديك كائن البايت هذا في متغير يسمى msg_bytes.يمكنك بعد ذلك تحليل الرسالة باستخدام:

import email.parser
msg = email.parser.BytesParser().parsebytes(msg_bytes)

يمكنك بعد ذلك الوصول إلى أجزاء مختلفة من الرسالة (راجع الوثائق على email.message.Message):

# get a bytes object containing the base64-decoded message
textbytes = msg.get_payload(decode=True)

# get the content charset
content_charset = msg.get_content_charset()

# decode the text to obtain a string object
text = textbytes.decode(content_charset)

سيكون هذا قادرًا على التعامل مع معظم رسائل البريد الإلكتروني الصالحة، إن لم يكن كلها.

يحاول البريد الوارد, ، هنا لا تحتاج إلى إصلاح برامج الترميز

لأن imaplib هي مكتبة ذات مستوى منخفض للغاية وتقوم بإرجاع النتائج التي يصعب التعامل معها

تثبيت

pip install imbox

الاستخدام

from imbox import Imbox

with Imbox('imap.gmail.com',
        username='username',
        password='password',
        ssl=True,
        ssl_context=None,
        starttls=False) as imbox:

    all_inbox_messages = imbox.messages()
    for uid, message in all_inbox_messages:
        message.sent_from
        message.sent_to
        message.body
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top