Python正在阅读电子邮件信息



我正在尝试读取收到的最后一封电子邮件的信息:

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('test1@gmail.com', 'ABC#')
mail.list()
mail.select("inbox")
result, data = mail.search(None, "ALL")
ids = data[0]  # data is a list.
id_list = ids.split()  # ids is a space separated string
latest_email_id = id_list[-1]  # get the latest
#print ("latest_email_id= ", latest_email_id)
result, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]

"raw_email"的打印声明是这样的(注意,出于安全原因,我更改了信息:

b'Delivered-To: test1@gmail.comrnReceived: by 2002:ac8:4593:0:0:0:0:0 with SMTP id l1234;rn        Tue, 27 Nov 2018 09:16:41 -0800 (PST)rnX-Received: by 2002:a5d:4ec4:: with SMTP id 111.1.1111;rn        Tue, 27 Nov 2018 09:16:40 -0800 (PST)rnARC-Seal: i=1; a=rsa-sha256; t=1543339000; cv=none;rn        d=google.com; s=arc-20160816;rn        b=AYhrN2mVh6Ho33wOVqGReMIqrFd7+UuozI633AT/FE59WUVIlg539V2+SYxGl1YXp7rn         q7n/17RQdSeBtv4FghG6T8C4FyXvrqnsoiXjtVH48MrJ0g+fqVdRQCINaLG6LP4Z/XAUrn         bjDhcg1bV9gqdOtOws5FMjnRtruWo390/jqqHaCOlJNy1++Yw2rHY894Bh619p6m2GL5rn         Yj4nLaDrB45M2O/CqLGpD0EJtYEkdUO1WClqf7qU35bDV0l8ALm4JVUM0P1aNeiFK5RIrn         sISOWOz3PDDt461Zm24TYrFBX4MaA5fZQoW2f2AFoYk8efhMpIr2idtvPjmGWJ1Vn6zorn         V2uw==rnARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;rn        h=to:subject:message-id:date:from:mime-version:dkim-signature;rn        bh=DfCkM5yA0BCKRwEW2DYkDiGYlT4tuDfEz10cbS7lscs=;rn        b=iFgtdMnLGQ4oMk3s4MnCIFpZ+7phiGbhbyGs6FheIXNYtFt6pB59CRNH2llvJ+f3bSrn         6DS/wqelDIStDybG4DLPvAi6d+gmcFAjlvRhVgmFphx83vdH8PGL/0e50JbHUFUszTqern         aDQKGvB38dK+GpFk2lE0Ibw6NBOZlmN//xSmSGXl4i0tc5SybecqcVKFa4CFpP+o69Bhrn         nScpBZHn4kCo3O0H8aDtFi5ThVbOBczIXNwgjCadF09N1jlrzt/je8IIogyuvrJ/jUBvrn         NLJkWk2isCq8f2Q0m6NghqaNVdtlh0cG34i7oU39sjnYxEZ1E6l/zwCI2gvPOA7RzvNTrn         CbnQ==rnARC-Authentication-Results: i=1; mx.google.com;rn       dkim=pass header.i=@gmail.com header.s=20161025 header.b=gxAxSqva;rn       spf=pass (google.com: domain of pingY@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=Y@gmail.com;rn       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.comrnReturn-Path: <pingY@gmail.com>rnReceived: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])rn        by mx.google.com with SMTPS id FAKE.rn        for <zXtest@gmail.com>rn        (Google Transport Security);rn        Tue, 27 Nov 2018 09:16:40 -0800 (PST)rnReceived-SPF: pass (google.com: domain of pingY@gmail.com designates 209.85.220.41 as permitted sender) client-ip=111.8115.111.11;rnAuthentication-Results: mx.google.com;rn       dkim=pass header.i=@gmail.com header.s=20161025 header.b=gxAxSqva;rn       spf=pass (google.com: domain of pingY@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=Y@gmail.com;rn       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.comrnDKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;rn        d=gmail.com; s=20161025;rn        h=mime-version:from:date:message-id:subject:to;rn        bh=DfCkM5yA0BCKRwEW2DYkDiGYlT4tuDfEz10cbS7lscs=;rn        b=gxAxSqvaKL/tnvzcAYWgKd7XNimR8vdxz7ashDknF2+nZLSQHYSHaIjdOzSX7dZFCwrn         yDl+9jo6P7RTupihLR/6xve7iJf3bbt98Q6BjDTNhOTE9n5cK/WTrrVh+vvu36P0CPEern         H+q2BYzltAX6hlXog3UaV9UZZ4wTzZUHICJYoOPCkwIwJz3C00HLA3xLbqvxTESisauhrn         Blahrn         +Bah+iCaGPLWIL9XIhT30BQaNEPLX0vxIh4pYhjrlT8rn         lPYA==rnX-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;rn        d=1e100.net; s=20161025;rn        h=x-gm-message-state:mime-version:from:date:message-id:subject:to;rn        bh=DfCkM5yA0BCKRwEW2DYkDiGYlT4tuDfEz10cbS7lscs=;rn        b=ACzy4UErTUjbqaUkxPA1yAc87d9gpnlsNKuKE/IHAfL6BY/zOyWZe1nNdTdpBKUPbfrn         1PK2L05DAfD+JZRC7xxhOrGhfKU6vES9jk50V/R0sJGgIWTz7Mp6JJIDR3ubMg/leASOrn         BBl5wsrePqO/hqNdTv6/GwnjEJrMRmlYG7CF/Yl5f5Xo8FdGnr65T7M6RjCBqfSvMmmarn         T5v9HcWz8jwpmdoHsD5cUf/hnpC+xIhzX0RlKb4U/TjHP6s7UJ0JrQrH6oDUQOdqniH1rn         1owpsiqS6lxU44jGkl1PbiSiryiRfkb6cMIf6aOwT30XFY4kZsGlOO5QN8i1/UbXFNl8rn         sM1w==rnX-Gm-Message-State: AA+aEWYeL+LxPlxaP3qr+R6Um7j/o66pbmbLcLI9rY/mB9OgwrdILrhZrntabpjiMOwJyy4ihBPviIGHxV2JHXO/tGet/97T31uSyGRKMc=rnX-Google-Smtp-Source: ABC/BLANK/BLANK=rnX-Received: by 2002:adf:c44a:: with SMTP id FAKE.1.FAKE;rn Tue, 27 Nov 2018 09:16:40 -0800 (PST)rnMIME-Version: 1.0rnFrom: Y <pingY@gmail.com>rnDate: Wed, 28 Nov 2018 04:16:28 +1100rnMessage-ID: <CA+KiAqOmG37ysA-+JPgMopYpn41A12oGbNTXzp9dQDAmS5-tVQ@mail.gmail.com>rnSubject: Welcome to the X PortalrnTo: zXtest@gmail.comrnContent-Type: multipart/alternative; boundary="000000000000dd770b057ba89c59"rnrn--000000000000dd770b057ba89c59rnContent-Type: text/plain; charset="UTF-8"rnrnHi test1rnWelcome to the X Portal this si 2nd emailrnYrnrn--000000000000dd770b057ba89c59rnContent-Type: text/html; charset="UTF-8"rnrn<div dir="ltr"><div dir="ltr"><div>Hi Y</div><div>Welcome to X this si 2nd email</div><div>Y<br></div></div></div>rnrn--000000000000dd770b057ba89c59--rn'

我读过几篇关于阅读电子邮件信息的文章。即python imaplib以获取gmail收件箱主题标题和发件人名称

他们大多假设返回的数据是元组,并在某种程度上认为这个

for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
varSubject = msg['subject']
varFrom = msg['from']

我如何检索主题和收件人等信息
自从我尝试以来,它似乎不是字典

dTemp = {}
dTemp = raw_email
dTemp["Subject"]

最后一句话给了我一个错误

对于解析电子邮件,最好使用内置的email.parser模块。

如果您将raw_email作为bytes,则可以使用email.parser.BytesParser()对其进行解析:

>>> parser = email.parser.BytesParser()
>>> parsed_message = parser.parsebytes(email_body, headersonly=True)  # or False...

然后查看email.message.Message上的文档以访问消息中的数据,但通常情况下它是这样工作的:

>>> parsed_message["Subject"]
'Welcome to the X Portal'
>>> parsed_message["From"]
'Y Ferdowsian <pingY@gmail.com>'
>>> parsed_message["To"]
'zXtest@gmail.com'

最新更新