使用Python和imaplib处理编码消息

2024-10-02 02:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在过去的几天里,我一直在编写一个脚本来解析自动生成的帮助台问题并将其内容存储到数据库中。在测试时,我遇到了几封电子邮件,这些邮件似乎被编码了,导致脚本失败。以下是其中一个RFC822s的示例:

"[(b'9255 (RFC822 {12558}', b'Delivered-To: XXXXXXXXX\r\nReceived: by 10.220.77.132 with SMTP id g4csp176213vck;\r\n Mon, 28 Jul 2014 09:37:05 -0700 (PDT)\r\nX-Received: by 10.67.30.130 with SMTP id ke2mr39896936pad.44.1406565425185;\r\n Mon, 28 Jul 2014 09:37:05 -0700 (PDT)\r\nReturn-Path: \r\nReceived: from XXXXXXXXX (XXXXXXXXX [74.125.149.112])\r\n by XXXXXXXXX with SMTP id yh3si18379315pab.170.2014.07.28.09.37.04\r\n for ;\r\n Mon, 28 Jul 2014 09:37:04 -0700 (PDT)\r\nReceived-SPF: none (XXXXXXXXX: XXXXXXXXX does not designate permitted sender hosts) client-ip=74.125.149.141;\r\nAuthentication-Results: XXXXXXXXX;\r\n spf=neutral (XXXXXXXXX: XXXXXXXXX does not designate permitted sender hosts) v\r\nReceived: from XXXXXXXXX ([74.125.149.141]) by XXXXXXXXX ([74.125.148.10]) with SMTP;\r\n\tMon, 28 Jul 2014 16:37:04 GMT\r\nReceived: from XXXXXXXXX ([209.85.213.178]) (using TLSv1) by XXXXXXXXX ([74.125.148.12]) with SXXXXXXXXX; Mon, 28 Jul 2014 09:37:04 PDT\r\nReceived: by XXXXXXXXX with SMTP id uq10sf3897971igb.11\r\n for ; Mon, 28 Jul 2014 09:37:03 -0700 (PDT)\r\nX-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r\n d=1e100.net; s=20130820;\r\n h=x-gm-message-state:mime-version:from:to:date:subject:message-id\r\n :x-original-sender:x-original-authentication-results:precedence\r\n :mailing-list:list-id:list-post:list-help:list-archive\r\n :list-unsubscribe:content-type:content-transfer-encoding;\r\n bh=H+FlcmWQAFURCHnDFK/bNHUOvofUAPB8bcDYlBceyxE=;\r\n b=LoR8D1MK8eoDG9DLkP9gkfR82+EGUIEeOTLpqymqxyx9HJl0C9BW6iwPD7OgrJFbV4\r\n xWYumML6RCinpcZc4d6VCDSw+akXLdhiol+lbWJBZWvgN4BQPgHJwCF6EaHYf3h8j4tq\r\n /KAZIkXowz4/WKW8STri4BVjlA2a4LPwV/wazP+I9Kvr1yz433ymd+iCY1V0NexTI+cb\r\n 9m3IyL8sqB0+Efyu+XQrR2y7ZdXDPwdzGS/WNHJBtKga5xPDtPga+21pozVMCbuCc/cj\r\n Cx9me6cVo19PrNKIOtSimDZ1u6ELdpVr4iprYQSaT8arYYiCPHJE34OFPlqspTxjm1eI\r\n ngyg==\r\nX-Gm-Message-State: ALoCoQkb908wRLWedDE+CtRzjD6VwC6Nja6duttyoVAdf+TFFn+uCxFB0Kwd5jk411YWdMD2G6HuFeRj2y3q7EzTe/vTvPLfymDIkHwZQa1r1zQ8I1B254t6v01ourR8InF/41aPGnnD\r\nX-Received: by 10.42.48.74 with SMTP id r10mr26049776icf.18.1406565423564;\r\n Mon, 28 Jul 2014 09:37:03 -0700 (PDT)\r\nX-Received: by 10.42.48.74 with SMTP id r10mr26049775icf.18.1406565423537;\r\n Mon, 28 Jul 2014 09:37:03 -0700 (PDT)\r\nX-BeenThere: XXXXXXXXX\r\nReceived: by 10.50.153.15 with SMTP id vc15ls1961411igb.42.gmail; Mon, 28 Jul\r\n 2014 09:37:03 -0700 (PDT)\r\nX-Received: by 10.66.254.37 with SMTP id af5mr39703901pad.113.1406565423331;\r\n Mon, 28 Jul 2014 09:37:03 -0700 (PDT)\r\nReceived: from XXXXXXXXX (XXXXXXXXX [74.125.149.158])\r\n by XXXXXXXXX with SMTP id da9si9190520pdb.425.2014.07.28.09.37.02\r\n for ;\r\n Mon, 28 Jul 2014 09:37:03 -0700 (PDT)\r\nReceived-SPF: none (XXXXXXXXX: XXXXXXXXX does not designate permitted sender hosts) client-ip=207.211.31.47;\r\nReceived: from XXXXXXXXX ([207.211.31.47]) by XXXXXXXXX ([74.125.148.10]) with SMTP;\r\n\tMon, 28 Jul 2014 16:37:02 GMT\r\nReceived: from XXXXXXXXX (XXXXXXXXX\r\n [129.135.112.43]) (Using TLS) by XXXXXXXXX; Mon, 28 Jul\r\n 2014 12:37:01 -0400\r\nReceived: from XXXXXXXXX (129.135.128.210) by XXXXXXXXX\r\n (129.135.112.45) with Microsoft SMTP Server id 14.3.181.6; Mon, 28 Jul 2014\r\n 11:36:58 -0500\r\nReceived: from ITSDC50 ([127.0.0.1]) by XXXXXXXXX with Microsoft\r\n SMTPSVC(6.0.3790.4675);\t Mon, 28 Jul 2014 11:36:58 -0500\r\nMIME-Version: 1.0\r\nFrom: \r\nTo: \r\nDate: Mon, 28 Jul 2014 11:36:58 -0500\r\nSubject: Dispatching IT/Cares Case: SC-118656-7031\r\nMessage-ID: \r\nX-OriginalArrivalTime: 28 Jul 2014 16:36:58.0498 (UTC) FILETIME=[26792E20:01CFAA82]\r\nX-MC-Unique: 114072812370105901\r\nX-pstn-levels: (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 )\r\nX-pstn-dkim: 0 skipped:not-enabled\r\nX-pstn-settings: 1 (0.1500:0.1500) cv gt6 gt5 gt4 gt3 gt2 gt1\r\nX-pstn-addresses: from [1094/49]\r\nX-pstn-nxpr: disp=neutral, envrcpt=XXXXXXXXX\r\nX-pstn-nxp: bodyHash=9500f76054cf97c2a0eec20f8940768958faf6c3, headerHash=eb9362a172738328a8b8a8ae406c42a63f5545f9, keyName=4, rcptHash=e0dd4695780dcb1818e78b482447ac976870bcbe, sourceip=207.211.31.47, version=1\r\nX-Original-Sender: XXXXXXXXX\r\nX-Original-Authentication-Results: XXXXXXXXX; spf=neutral\r\n (XXXXXXXXX: XXXXXXXXX does not designate permitted sender\r\n hosts) smtp.mail=XXXXXXXXX\r\nPrecedence: list\r\nMailing-list: list XXXXXXXXX contact XXXXXXXXX\r\nList-ID: \r\nX-Google-Group-Id: 511158325204\r\nList-Post: , \r\nList-Help: , \r\nList-Archive: \r\nList-Unsubscribe: ,\r\n \r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: base64\r\nX-pstn-neptune: 0/0/0.00/0\r\nX-pstn-levels: (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 )\r\nX-pstn-dkim: 0 skipped:not-enabled\r\nX-pstn-settings: 5 (2.0000:0.0200) s cv fc lc gt6 gt5 gt4 GT3 gt2 gt1 ft lt r p m c \r\nX-pstn-addresses: from [db-null] \r\nX-pstn-nxpr: disp=neutral, envrcpt=XXXXXXXXX\r\nX-pstn-nxp: bodyHash=45f4f2e59005199791055b3d1f937e1d3fb7d7ca, headerHash=ca981838d5783da04d9d38e3fffc3f5907100fcf, keyName=4, rcptHash=4f3dee680a09495dc5b095849a4225f49c4a45f4, sourceip=74.125.149.141, version=1\r\n\r\nQ2FzZSBOdW1iZXI6ICAgICAgICAgU0MtMTE4NjU2LTcwMzENClNldmVyaXR5IExldmVsOiAg\r\nICAgIE5vcm1hbA0KQWNjb3VudCBOYW1lOiAgICAgICAgSENSIE1hbm9yY2FyZQ0KU2l0ZSBO\r\nYW1lOiAgICAgICAgICAgMzAxDQpDbGllbnQgTmFtZTogICAgICAgICBBbWFuZGEgUGVucm9k\r\nDQpDbGllbnQgUGhvbmU6ICAgICAgICANCkNsaWVudCBNYWlsUGF0aDogICAgIGFtYW5kYS5w\r\nZW5yb2RAaGNyLW1hbm9yY2FyZS5jb20NCkNhc2UgUHJvZHVjdDogICAgICAgIEhDUi1GaWVs\r\nZCBEZXBsb3ltZW50DQpDYXNlIEtleXdvcmQ6ICAgICAgICBGRC1BU0QNCg0KDQoNClBsZWFz\r\nZSBDbGljayBCZWxvdyB0byBVcGRhdGUgQ2FzZTogDQoNCg0KUHJvYmxlbSBEZXNjcmlwdGlv\r\nbg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq\r\nKioqKioqKioNCjw8LSBUaGlzIENhc2UgaXMgYSBTdWItQ2FzZSBvZjogRU0tMTE4NjU2LTcw\r\nMTcgIC0+Pg0KDQpQbGVhc2UgZGlzcGF0Y2ggd2lyaW5nIHRlY2ggdG8gaW5zdGFsbCB0d28g\r\nbmV3IG5ldHdvcmsgZHJvcHMuIE9uZSBpbiB0aGUgTnVyc2UgTWFuYWdlIE9mZmljZSBhbmQg\r\nb25lIGluIHRoZSBDYXNlIE1hbmFnZW1lbnQgT2ZmaWNlDQoNCkxvY2F0aW9uIG9mIGRyb3Ag\r\naXM6ICAgICAgIE51cnNlIE1hbmFnZXIgT2ZmaWNlICYgQ2FzZSBNYW5hZ2VtZW50IE9mZmlj\r\nZQ0KUGhvbmUgRXh0IChJZiBQaG9uZSBEcm9wKTogbi9hDQoNCk9ubHkgQ2F0NWUgUGxlbnVt\r\nIFJhdGVkIChDTVApIGNhYmxlIGNhbiBiZSB1c2VkIGZvciBuZXcgZHJvcHMuIEFkZGluZyBS\r\nYWNld2F5L1dpcmVtb2xkIGlzIG5vdCBhbiBvcHRpb24gd2l0aG91dCBwcmlvciBhcHByb3Zh\r\nbC4gSWYgUmFjZXdheS9XaXJlbW9sZCBpcyByZXF1aXJlZCwgcGxlYXNlIG5vdGlmeSB5b3Vy\r\nIGJ1eWVyIGFuZCByZXF1ZXN0IHRoZXkgb2J0YWluIGFwcHJvdmFsLiBTaW5nbGUgZ2FuZyBm\r\nYWNlLXBsYXRlIHNob3VsZCBiZSB1c2VkIChzdXJmYWNlIG1vdW50IGJveGVzIHNob3VsZCBu\r\nb3QgYmUgdXNlZCB1bmxlc3MgaW5zdGFsbGluZyBhIFdBUCwgUE9DIHNjcmVlbiwgb3IgZ2l2\r\nZW4gY3VzdG9tZXIgYXBwcm92YWwpLiANCg0KRGF0YSBMYWJlbGluZzoNCi0tLS0tLS0tLS0t\r\nLS0tDQpXYWxsIEphY2sgQXJlYToNCkVhY2ggd2FsbCBqYWNrIHdpbGwgYmUgbGFiZWxlZCBp\r\nbiBzZXF1ZW5jZSBmb3IgaWRlbnRpZmljYXRpb24gcHVycG9zZXMuDQpBbGwgbGFiZWxzIHdp\r\nbGwgYmUgY29tcHV0ZXIgZ2VuZXJhdGVkLg0KVGhlIGxhYmVsaW5nIHNlcXVlbmNlIHdpbGwg\r\nYmU6DQpDbG9zZXQsIFJhY2ssIFBhdGNoIFBhbmVsLCBQYXRjaCBQYW5lbCBQb3J0Li4uDQpF\r\neGFtcGxlIG9mIGhvdyBkcm9wIHdvdWxkIGJlIGxhYmVsZWQ6IDEtQi0xLTI0DQpUaGUgYWJv\r\ndmUgbGFiZWwgd291bGQgcmVwcmVzZW50OiANCiAgICAgQ2xvc2V0IDENCiAgICAgUmFjayBC\r\nIA0KICAgICBQYXRjaCBQYW5lbCAxIA0KICAgICBQYXRjaCBQYW5lbCBQb3J0IDI0DQoNCkRh\r\ndGEgTURGL0lERiBsYWJlbGluZzoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\r\nDQpFYWNoIFJhY2sgd2lsbCBiZSBsYWJlbGVkIOKAnENsb3NldCB4IFJhY2sgeeKAnSAoeCA9\r\nIDEtNC4gQ2xvc2V0IDEgc2hvdWxkIGJlIHRoZSBNREYuIENsb3NldCAyIHNob3VsZCBiZSBJ\r\nREYjMSxldGPigKYpIEVhY2ggUGF0Y2ggUGFuZWwgd2lsbCBiZSBsYWJlbGVkIOKAnFBhdGNo\r\nIFBhbmVsIHjigJ0gKHggPSAxLTQuKQ0KDQpTd2l0Y2hlcyBzaG91bGQgYmUgbGFiZWxlZCBB\r\nLUY6IFN3aXRjaCBBLCBTd2l0Y2ggQiwgZXRjLi4uDQoNCklmIFJhY2tzLCBQYXRjaCBQYW5l\r\nbHMsIGFuZCBzd2l0Y2hlcyBhdCB5b3VyIGRlc3RpbmF0aW9uIGFyZSBub3QgcHJvcGVybHkg\r\nbGFiZWxlZCwgcGxlYXNlIGNhbGwgSU5HUiBjb250YWN0IHRvIHByb3Blcmx5IGlkZW50aWZ5\r\nIGVhY2ggY2xvc2V0LCByYWNrLCBhbmQgcGF0Y2ggcGFuZWwgaW4gb3JkZXIgdG8gaGF2ZSB0\r\nZWNobmljaWFuIHByb3Blcmx5IGxhYmVsIGVhY2guIElOR1IgdGVjaCBjYW4gYWxzbyBoZWxw\r\nIGxvY2F0ZSBhdmFpbGFibGUgc3dpdGNoIHBvcnRzIGlmIGFsbCBhcHBlYXJzIGZ1bGwuDQoN\r\nClBhdGNoIGRyb3AgZnJvbSBwYXRjaCBwYW5lbCB0byBmYWNpbGl0eSBzd2l0Y2ggYW5kIGZy\r\nb20gd2FsbCBqYWNrIHRvIG5ldHdvcmsgZGV2aWNlLiBQcm92aWRlIHBhdGNoIGNhYmxlIGZv\r\nciBjb21wdXRlciBvciBuZXR3b3JrIGRldmljZSB0byB3YWxsIGphY2sgaWYgbmVlZGVkLg0K\r\nDQoqKioqKkRBV EEgSk9CIERFTElWRVJBQkxFUyoqKioqOg0KLS0tLS0tLS0tLS0tLS0tLS0t\r\nLS0tLS0tLS0tLS0tLS0NCkRvd25sb2FkIGFuZCBzZW5kIGRyb3AgdGVzdCByZXN1bHRzIChp\r\nZiB5b3UgZG8gbm90IGhhdmUgYSBtYWNoaW5lIGNhcGFibGUgb2YgZG93bmxvYWRpbmcgdGVz\r\ndCByZXN1bHRzLCB0YWtlIHBpY3R1cmVzIG9mIHlvdXIgbGl2ZSB0ZXN0ZXIgc2hvd2luZyB0\r\naGUgZHJvcCBwYXNzZXMpIGFuZCBhIGRpZ2l0YWwgcGhvdG8gb2YgZWFjaCBwcm9wZXJseSBs\r\nYWJlbGVkIHdhbGwgamFjayANDQphbmQgMSBkaWdpdGFsIHBob3RvIG9mIHBhdGNoIHBhbmVs\r\nIHRoYXQgc2hvd3MgeW91ciBqb2IgaXMgcHJvcGVybHkgbGFiZWxlZCBhbmQgdGFnZ2VkIGFu\r\nZCBlbWFpbCB0byBBU0QgY29udGFjdC4NCg0KUGxlYXNlIGNhbGwgSU5HUiBjb250YWN0IHRv\r\nIGRpc2N1c3MgYW55IGlzc3VlcyB3aXRoIGpvYi4NCg0KSUYgV09SSyBJUyBDQU5DRUxMRUQg\r\nT1IgQ09NUExFVEUgVVBPTiBBUlJJVkFMIFBMRUFTRSBPQlRBSU4gUkVRVUVTVEVEIERFTElW\r\nRVJBQkxFUyBQUklPUiBUTyBMRUFWSU5HIFNJVEUuDQoNCklOR1IgQ29udGFjdCBpbmZvOg0K\r\nUmljayBNYXJ0aW4gYXQgODAwLTYwMy01NTAwIGV4dC4gNTExMSAobHVuY2ggMTowMHBtIC0g\r\nMjowMHBtIEVTVCkNClJpY2sgWWFuY2V5IGF0IDgwMC02MDMtNTUwMCBleHQuIDUxMTUgKGx1\r\nbmNoIDI6MDBwbSAtIDI6MzBwbSBFU1QpDQpEb3VnIEpvaG5zb24gYXQgODAwLTYwMy01NTAw\r\nIGV4dC4gNTIwMg0KU3RldmUgSmFrdWJpayBhdCA4MDAtNjAzLTU1MDAgZXh0LiA1NDU2DQpM\r\nb2dhbiBIYWdhIGF0IDgwMC02MDMtNTUwMCBleHQuIDU0NzYNClRyYXZpcyBCYWlsZXkgYXQg\r\nODAwLTYwMy01NTAwIGV4dC4gNTIwOQ0KSXNhYWMgRGlja3NvbiBhdCA4MDAtNjAzLTU1MDAg\r\nZXh0LiA1MTk4DQoNCk9OTFkgSUYgWU9VIEFSRSBVTkFCTEUgVE8gUkVBQ0ggSU5HUiBjb250\r\nYWN0LCBhZnRlciBsZWF2aW5nIG1lc3NhZ2VzIGZvciBlYWNoIHBlcnNvbiBsaXN0ZWQgYWJv\r\ndmUgYW5kIHdhaXRpbmcgNSBtaW51dGVzIGZvciBhIHJldHVybiBjYWxsLCBjb250YWN0Og0K\r\nVG9ueSBCdXRsZXIgYXQgODAwLTYwMy01NTAwIGV4dC4gNTE0MA0KQmFyYiBFZHdhcmRzIGF0\r\nIDgwMC00MjctMTkwMiBleHQuIDUxODMNCkRhdmUgSGlyZSBhdCA4MDAtNDI3LTE5MDIgZXh0\r\nLiA2NDE4DQoNCkFTRCBBZnRlciBIb3VycyBudW1iZXIgaXMgODI4LTYyNC0xMDk5IGFuZCBl\r\nbWFpbCBmb3IgdGhpcyBhY2NvdW50IGlzIHRlYW1pbnRlcmdyYXBoQGFzZC11c2EuY29tDQoN\r\nCjwwNy8yOC8xNCAxMTozNiBDYXNlIG9wZW5lZCBieTogIHJtYXJ0aW4gKDI1Nik3MzAtNTEx\r\nMT4NCg0KDQpQcm9ibGVtIFNvbHV0aW9uDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioq\r\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KUmVmZXJyZWQgZm9yIFJlc29sdXRp\r\nb24gVG86IEFTRA0KPDA3LzI4LzE0IDExOjM2IENhc2UgZWRpdGVkIGJ5OiBybWFydGluICgy\r\nNTYpNzMwLTUxMTE+DQoqfip+Kn4qfip+Kn4qfip+Kn4qfip+Kn4qfip+Kn4qfip+Kn4qfip+\r\nKn4qfip+Kn4qfip+Kg0KDQoNCg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f\r\nX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f\r\nX19fX19fX19fX19fX19fX18NCk5vdGljZSByZXF1aXJlZCBieSBsYXc6ICBUaGlzIGVtYWls\r\nIG1heSBjb25zdGl0dXRlIGFuIGFkdmVydGlzZW1lbnQgb3Igc29saWNpdGF0aW9uIHVuZGVy\r\nIFUuUy4gbGF3IGlmIGl0cyBwcmltYXJ5IHB1cnBvc2UgaXMgdG8gYWR2ZXJ0aXNlIG9yIHBy\r\nb21vdGUgYSBjb21tZXJjaWFsIHByb2R1Y3Qgb3Igc2VydmljZS4gIFlvdSBtYXkgY2hvb3Nl\r\nIG5vdCB0byByZWNlaXZlIGFkdmVydGlzaW5nIGFuZCBwcm9tb3Rpb25hbCBtZXNzYWdlcyBm\r\ncm9tIEFTRCAoZXhjZXB0IGZvciB3d3cuYXNkLXVzYS5jb20sIHdoaWNoIG1hbmFnZXMgZW1h\r\naWwgcHJlZmVyZW5jZXMgdGhyb3VnaCBhIHNlcGFyYXRlIHByb2Nlc3MpIGF0IHRoaXMgZW1h\r\naWwgYWRkcmVzcyBieSBmb3J3YXJkaW5nIHRoaXMgbWVzc2FnZSB0byBsZWF2ZW1lYWxvbmVA\r\nYXNkLXVzYS5jb20uICBJZiB5b3UgZG8gc28sIHRoZSBzZW5kZXIgb2YgdGhpcyBlbWFpbCB3\r\naWxsIGJlIG5vdGlmaWVkIHByb21wdGx5IGFuZCB5b3Ugd2lsbCBub3QgYmUgY29udGFjdGVk\r\nIGFnYWluLiAgT3VyIHByaW5jaXBhbCBwb3N0YWwgYWRkcmVzcyBpcyA3NzUgR29kZGFyZCBD\r\nb3VydCBBbHBoYXJldHRhLCBHQSAgMzAwMDUuDQoNCg==\r\n'), b')']"

邮件的正文是编码的吗?如果是这样的话,我应该如何处理解码呢?在


Tags: fromidbywithnotsmtpjullist
3条回答

主体被编码(内容传输编码:base64),这与加密的不同。将第一组字符粘贴到在线解码器中

Q2FzZSBOdW1iZXI6ICAgICAgICAgU0MtMTE4NjU2LTcwMzENClNldmVyaXR5IExldmVsOiAg

被解码为

^{pr2}$

Python有库可以解码base64,但是如果imaplib没有一个内置的库来简化这一点,我会感到失望的。在

您可以使用^{}包进行此操作。这里有一个列表,列表的第一项是元组,第二个元素是整个电子邮件。假设在一个名为msg_bytes的变量中有一个bytes对象。然后可以使用以下方法解析消息:

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

然后您可以访问消息的不同部分(请参阅^{}上的文档):

^{pr2}$

这将能够处理大多数,如果不是全部,有效的电子邮件。在

试试Imbox,这里不需要修复编解码器

因为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

相关问题 更多 >

    热门问题