python – 解析imaplib返回的Message-ID标头
发布时间:2020-12-20 11:17:32 所属栏目:Python 来源:网络整理
导读:我正在通过IMAP从Gmail中的电子邮件中获取messageid. 这段代码: messageid = m.fetch(num,'(BODY[HEADER.FIELDS (MESSAGE-ID)])')print messageid 返回: [('1 (BODY[HEADER.FIELDS (MESSAGE-ID)] {78}','Message-ID: actualmessageid@mail.mail.gmail.com
我正在通过IMAP从Gmail中的电子邮件中获取messageid.
这段代码: messageid = m.fetch(num,'(BODY[HEADER.FIELDS (MESSAGE-ID)])') print messageid 返回: [('1 (BODY[HEADER.FIELDS (MESSAGE-ID)] {78}','Message-ID: <actualmessageid@mail.mail.gmail.com>rnrn'),')'] 我将如何解析实际的消息ID? 解决方法
您也可以使用
email module的
HeaderParser.parsestr() function(与Parser相同的API,但不担心电子邮件的正文)和
parseaddr() function来实现您的目标.
>>> from email.parser import HeaderParser >>> from email.utils import parseaddr >>> hp = HeaderParser() >>> response = [('1 (BODY[HEADER.FIELDS (MESSAGE-ID)] {78}',')'] >>> header_string = response[0][1] >>> header_string 'Message-ID: <actualmessageid@mail.mail.gmail.com>rnrn' >>> header = hp.parsestr(header_string) >>> header <email.message.Message instance at 0x023A6198> >>> header['message-id'] '<actualmessageid@mail.mail.gmail.com>' >>> msg_id = parseaddr(header['message-id']) >>> msg_id ('','actualmessageid@mail.mail.gmail.com') >>> msg_id[1] 'actualmessageid@mail.mail.gmail.com' 从而: from email.parser import HeaderParser from email.utils import parseaddr hp = HeaderParser() def get_id(response): header_string = response[0][1] header = hp.parsestr(header_string) return parseaddr(header['message-id'])[1] response = [('1 (BODY[HEADER.FIELDS (MESSAGE-ID)] {78}',')'] print(get_id(response)) 收益: actualmessageid@mail.mail.gmail.com (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |