Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python和imaplib处理编码消息_Python_Imaplib - Fatal编程技术网

使用Python和imaplib处理编码消息

使用Python和imaplib处理编码消息,python,imaplib,Python,Imaplib,在过去的几天里,我一直在写一个脚本,解析自动生成的帮助台票据,并将其内容存储到数据库中。在测试过程中,我遇到了几封似乎已编码的电子邮件,导致脚本失败。以下是其中一个RFC822的示例: “[(b'9255(RFC822{12558}',b'delivery-To:XXXXXXXXX\r\n收到:由10.220.77.132发送,SMTP id为g4csp176213vck;\r\n星期一,2014年7月28日09:37:05-0700(PDT)\r\nX收到:由10.67.30.130发送,SM

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

“[(b'9255(RFC822{12558}',b'delivery-To:XXXXXXXXX\r\n收到:由10.220.77.132发送,SMTP id为g4csp176213vck;\r\n星期一,2014年7月28日09:37:05-0700(PDT)\r\nX收到:由10.67.30.130发送,SMTP id为KE2MR398969636PAD.44.14065425185;\r\n星期一,2014年7月28日09:37:05-0700(PDT)\r\nxxxxx收到路径:\r\nxxxxx[74.125.149.112])\r\n由XXXXXXXXX发送,SMTP id为yh3si18379315pab.170.2014.07.28.09.37.04\r\n用于;\r\n 2014年7月28日星期一09:37:04-0700(PDT)\r\n收到的SPF:none(XXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXX未指定允许的发送方主机)客户端ip=74.125.149.141;\r\n验证结果:XXXXXXXXXXXXX;\r\n SPF=中性(XXXXXXXXX:XXXXXXXXX不指定允许的发送方主机)v\r\n接收:XXXXXXXXX([74.125.149.141])通过SMTP从XXXXXXXX([74.125.148.10])接收;\r\n\tMon,2014年7月28日格林尼治标准时间16:37:04\r\n接收:XXXXXXXXXXXXXXXXX([209.85.213.178])(使用TLSv1)从XXXXXXXXXXXXX([74.125.148.12])使用Sxxxxxxxx;2014年7月28日星期一09:37:04 PDT\r\n收到:由xxxxxxxx发送,SMTP id为UQ10SF3897971GB.11\r\n用于;2014年7月28日星期一09:37:03-0700(PDT)\r\nX Google DKIM签名:v=1;a=rsa-sha256;c=relaxed/relaxed;\r\n d=1e100.net;s=20130820;\r\n h=x-gm-message-state:mime版本:from:to:date:subject:message id\r\n:x-original-sender:x-original-authentication-results:price\r\n:mail list-id:list-post:list-help:list-archive\r\n:list取消订阅ibe:内容类型:内容传输编码;\r\n bh=H+FlcmWQAFURCHnDFK/bNHUOvofUAPB8bcDYlBceyxE=;\r\n b=LoR8D1MK8eoDG9DLkP9gkfR82+EGUIEOTLQYMQXYX9HJL0C9BW6IWPD7OGRJFBV4\r\n xWYumML6RCinpcZc4d6VCDSw+akXLdhiol+LBWJBZWGN4BQPGHJWCF6EAHYF3H4TJ4TQ\r\r\r\n/KazixOW9BW9BW6BW6B8BJ4BJ4K4K4Kv0K4Kv0K4Kv3Kv3Kv3Kv3Kv3Kv4Kv3Kv3Kv3Kv3Kv3Kv3Kv39m3IyL8sqB0+Efyu+XQRR2Y7ZDXDPDZGS/WNHJBKGA5XPDTPGA+21POZVMBUCC/cj\r\n CX9ME6CVO19PRNKIOTSIMDZ1ULDVR4IPRYQSAT8ARYICPHJE34OFPLQSPTXJM1EI\r\n ngyg==\r\nX Gm消息状态:ALOCOQKB908WRLWEDD+CTRZJJD6VWC6VWC6NJA6DUTTYOVADF+TFFn+UCXF0KWKWD2KW4KWD1Y2KW7Y2F8INF\r\r\r\n接收日期:2014年7月28日星期一09:37:03-0700(PDT)\r\n接收日期:2014年10月42日星期四,SMTP id为r10mr26049776icf.18.14065423564;接收日期:2014年7月28日星期一09:37:03-0700(PDT)\r\nX BeenThere:XXXXXXXXX\r\n收到:10.50.153.15,SMTP id为VC15LS1961411GB.42.gmail;星期一,2014年7月28日\r\n 09:37:03-0700(PDT)\r\nX收到:10.66.254.37,SMTP id为af5mr39703901pad.113.14065423331;\r\n星期一,2014年7月28日09:37:03-0700(PDT)\r\n收到:来自xxxxxxxxxxxxxxxxx(xxxxxxxxxxxxx[74.125.149.158]\r\n由XXXXXXXX发送,SMTP id为da9si9190520pdb.425.2014.07.28.09.37.02\r\n用于;\r\n星期一,2014年7月28日09:37:03-0700(PDT)\r\n收到的SPF:none(XXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXX未指定允许的发送方主机)客户端ip=207.211.31.47;\r\n由XXXXXXXXXXXXX([74.125.148.10])从XXXXXXXXX([207.211.31.47]收到)使用SMTP;\r\n\tMon,2014年7月28日16:37:02 GMT\r\n收到:从XXXXXXXX(XXXXXXXXX\r\n[129.135.112.43])(使用TLS)到XXXXXXXXXXXX;周一,2014年7月28日\r\n 12:37:01-0400\r\n收到:从XXXXXXXXXXXXX(129.135.128.210)到XXXXXXXXXXXXXXXXXXXXX\r\r\n(129.135.112.45)使用Microsoft SMTP服务器id 14.3.181.6;2014年7月28日星期一\r\n 11:36:58-0500\r\n收到:由XXXXXXXX使用Microsoft SMTPSVC(6.0.3790.4675)从ITSDC50([127.0.0.0.1])接收;\t Mon,2014年7月28日11:36:58-0500\r\n时间版本:1.0\r\n从:\r\n到:\r\n日期:Mon,2014年7月28日11:36:58-0500\r\n对象:分派IT/Cares案例:SC-118656-7031\r\n消息ID:\r\nX原始原始时间:2014年7月28日16:36:58.0498(UTC)文件时间=[26792E20:01CFAA82]\r\nX唯一:114072812370105901\r\nX 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)\R\nX pstn dkim:0跳过:未启用\R\nX pstn设置:1(0.1500:0.1500)CV gt6 gt4 gt3 gt2 gt1\R\nX pstn地址:自[1094/49]\r\nX pstn nxpr:disp=neutral,envrcpt=XXXXXXXXX\r\nX pstn nxp:bodyHash=9500F76054CF97C2A0EEC20940768958FAF6C3,headerHash=EB9362A172738328A8B8A8A8AE406C42A63F5545F9,keyName=4,rcptHash=E0DD4695780DCB1818E78B48247AC976870BCBE,sourceip=207.211.31.47,版本=1\r\nX原始发送方:XXXXXXXXXXXXXXXXX\r\r\nX原始身份验证结果:XXXXX;spf=中性\r\n(XXXXXXXXX:XXXXXXXXX未指定允许的发件人\r\n主机)smtp.mail=XXXXXXXXX\r\n收件人:列表\r\n列表:列表XXXXXXXXX联系人XXXXXXXXX\r\n列表ID:\r\nX谷歌组ID:511158325204\r\n列表帖子:,\r\n列表帮助:,\r\n列表存档:\r\n列表取消订阅:,\r\n\r\n内容类型:文本/普通;字符集=UTF-8\r\n内容传输编码:base64\r\nX pstn neptune:0/0/0.00/r\nX 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)\R\nX pstn dkim:0跳过:未启用\R\nX pstn设置:5(2.0000:0.0200)S CV FC LC gt6 gt5 gt4 gt2 gt1 ft lt R P M C\R\nX pstn地址:从[db null]\r\nX pstn nxpr:disp=neutral,envrcpt=XXXXXXXXX\r\nX pstn nxp:bodyHash=45F4F2E5905791055B3D1F937E1D3FB7D7CA,headerHash=ca981838d5783da04d9d38e3fffc3f5907100fcf,keyName=4,rcptHash=4F3DEE680A09495DC5BXL5849A4225F49C4A45F4,sourceip=74.125.149.141,版本=1Icagie5vcm1hba0kqwnjb3vudcboyw1loiagicagicagSensie1hbm9yyy2fyzq0ku2l0zsbo\r\ny1loiagicagicagMzaxdqpdbgllbnqgtmftztogicagicagbbwfzgegugvucm9k\r\ndqpdbgllbnqgugvbmu6icagicagcancknsawd
Q2FzZSBOdW1iZXI6ICAgICAgICAgU0MtMTE4NjU2LTcwMzENClNldmVyaXR5IExldmVsOiAg
Case Number:         SC-118656-7031
Severity Level:  
import email.parser
msg = email.parser.BytesParser().parsebytes(msg_bytes)
# 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)
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
# import python base64 and re modules
import base64
import re

# Save the encoded part in a variable, e.g re.search grabs the encoded part after string "version=1\r\n\r\n" and saves to the variable named 'decoded'.
decoded = re.search('version=1\r\n\r\n(.*)', email, re.DOTALL)

# prints the decoded message
print(base64.b64decode(decoded.group(1)))
decoded = re.search('string1(.*)string2', email)