📜  从 Gmail 收件箱中获取看不见的电子邮件

📅  最后修改于: 2022-05-13 01:55:42.653000             🧑  作者: Mango

从 Gmail 收件箱中获取看不见的电子邮件

Python是一种广泛使用的高级、通用、解释型、多用途的动态编程语言。它可用于执行广泛的任务,例如机器学习、Web 应用程序开发、跨平台 GUI 开发等等。获取 Gmail 是Python可以完成的另一项任务。出于任何原因,您可能需要从项目或网站的收件箱中获取邮件。在本教程中,我们将了解如何从 Gmail 收件箱/已发送邮件中获取看不见的电子邮件。
首先,我们需要一个由 Google Security 生成的应用密码,因为在某些项目或脚本中直接使用密码是不安全的。

如何生成应用密码:

  1. 使用您的帐户访问 account.google.com。
  2. 在左侧选项卡中,选择安全性。
  3. 在登录 Google 下,选择应用密码。

    应用密码图片

  4. 确认你的身份。
  5. 选择自定义。

    选择定制

  6. 为您的应用程序选择任何名称并生成密码。
  7. 那是您的应用程序密码。复制密码,我们将需要它。

您还需要在 Google 设置中启用 IMAP。

在 gmail 中启用 IMAP

您将使用的库是:

  1. imaplib
  2. 电子邮件
  3. 网页浏览器
  4. 操作系统

这就是先决条件。现在让我们看看代码。

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 封未查看的电子邮件。

gmail草稿看不见的消息

gmail草稿看不见的消息2

gmail草稿看不见的消息3