📜  从 gmail python 中读取电子邮件(1)

📅  最后修改于: 2023-12-03 15:21:52.613000             🧑  作者: Mango

从 Gmail Python 中读取电子邮件

使用 Python 语言编写程序,可以轻松地从 Gmail 中读取电子邮件。通过这种方式,可以将 Gmail 中接收的大量邮件自动化处理,节省大量时间。

第一步:安装 Google API 客户端库

在开始编写 Python 代码之前,需要安装 Google API 客户端库。可以通过以下代码安装:

!pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
第二步:获得 Google API 令牌

为了从 Gmail 中读取电子邮件,需要获得 Google API 令牌。以下是获取 Google API 令牌的步骤:

  1. 打开 Google Developers Console
  2. 创建新项目并命名它
  3. 在 "API 和服务" 菜单中选择 "OAuth 同意屏幕"
  4. 为应用程序填写必要的信息
  5. 在 "API 和服务" 菜单中选择 "创建凭据"
  6. 选择 "Web 应用程序",填写 "授权 JavaScript 来源" 和 "重定向 URI"
  7. 点击 "创建"
  8. 点击 "下载 JSON" 按钮,将凭据文件下载到本地计算机
第三步:编写 Python 代码

在安装 Google API 客户端库并获得 Google API 令牌之后,现在可以编写 Python 代码以从 Gmail 中读取电子邮件。以下是代码片段:

from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import base64
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
import os
import urllib.request

# Load credentials from the saved session
creds = Credentials.from_authorized_user_file("token.json", scopes)

# Use Gmail API
service = build("gmail", "v1", credentials=creds)

# Get a list of messages from the Gmail inbox
def get_messages():
    try:
        messages = []
        result = service.users().messages().list(userId='me').execute()
        messages.extend(result['messages'])

        while 'nextPageToken' in result:
            page_token = result['nextPageToken']
            result = service.users().messages().list(userId='me', pageToken=page_token).execute()
            messages.extend(result['messages'])

        return messages
    except HttpError as error:
        print('An error occurred: %s' % error)
        return None

# Get message content from message ID
def get_message(message_id):
    try:
        message = service.users().messages().get(userId='me', id=message_id).execute()

        for part in message['payload']['parts']:
            if part['filename']:
                if 'data' in part:
                    data = part['data']
                else:
                    att_id = part['body']['attachmentId']
                    att = service.users().messages().attachments().get(userId='me', messageId=message['id'], id=att_id).execute()
                    data = att['data']

                    file_data = base64.urlsafe_b64decode(data.encode('UTF-8'))
                    path = part['filename']

                    with open(path, 'wb') as f:
                        f.write(file_data)

        return message
    except HttpError as error:
        print('An error occurred: %s' % error)
        return None
第四步:执行程序

在编写 Python 代码之后,现在可以执行程序。以下是代码片段:

messages = get_messages()

if messages is not None:
    for message in messages:
        message_id = message['id']
        message_content = get_message(message_id)
总结

使用 Python 语言编写程序,可以轻松地从 Gmail 中读取电子邮件。这种方式可以将 Gmail 中接收的大量邮件自动化处理,节省大量时间。