从 Gmail 收件箱中获取看不见的电子邮件
Python是一种广泛使用的高级、通用、解释型、多用途的动态编程语言。它可用于执行广泛的任务,例如机器学习、Web 应用程序开发、跨平台 GUI 开发等等。获取 Gmail 是Python可以完成的另一项任务。出于任何原因,您可能需要从项目或网站的收件箱中获取邮件。在本教程中,我们将了解如何从 Gmail 收件箱/已发送邮件中获取看不见的电子邮件。
首先,我们需要一个由 Google Security 生成的应用密码,因为在某些项目或脚本中直接使用密码是不安全的。
如何生成应用密码:
- 使用您的帐户访问 account.google.com。
- 在左侧选项卡中,选择安全性。
- 在登录 Google 下,选择应用密码。
- 确认你的身份。
- 选择自定义。
- 为您的应用程序选择任何名称并生成密码。
- 那是您的应用程序密码。复制密码,我们将需要它。
您还需要在 Google 设置中启用 IMAP。
您将使用的库是:
- imaplib
- 电子邮件
- 网页浏览器
- 操作系统
这就是先决条件。现在让我们看看代码。
Python3
# import required libraries
import imaplib
import email
from email.header import decode_header
import webbrowser
import os
# use your email id here
username = ""
# use your App Password you
# generated above here.
password = ""
# creata a imap object
imap = imaplib.IMAP4_SSL("imap.gmail.com")
# login
result = imap.login(username, password)
# Use "[Gmail]/Sent Mails" for fetching
# mails from Sent Mails.
imap.select('"[Gmail]/All Mail"',
readonly = True)
response, messages = imap.search(None,
'UnSeen')
messages = messages[0].split()
# take it from last
latest = int(messages[-1])
# take it from start
oldest = int(messages[0])
for i in range(latest, latest-20, -1):
# fetch
res, msg = imap.fetch(str(i), "(RFC822)")
for response in msg:
if isinstance(response, tuple):
msg = email.message_from_bytes(response[1])
# print required information
print(msg["Date"])
print(msg["From"])
print(msg["Subject"])
for part in msg.walk():
if part.get_content_type() == "text / plain":
# get text or plain data
body = part.get_payload(decode = True)
print(f'Body: {body.decode("UTF-8")}', )
输出:此代码将获取收件箱中前 20 封未查看的电子邮件。