在同一个thread_id中使用Gmail API回复Gmail,可以通过以下步骤实现:
pip
命令安装google-api-python-client
库。users().messages().list()
方法,根据thread_id获取特定线程的邮件列表。users().messages().get()
方法,根据邮件ID获取特定邮件的详细信息。users().messages().send()
方法,发送回复邮件。import os
import base64
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
# 客户端ID和客户端密钥
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
# 访问令牌文件路径
TOKEN_PATH = 'token.json'
# 用户授权范围
SCOPES = ['https://www.googleapis.com/auth/gmail.modify']
def get_credentials():
creds = None
if os.path.exists(TOKEN_PATH):
creds = Credentials.from_authorized_user_file(TOKEN_PATH, SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open(TOKEN_PATH, 'w') as token:
token.write(creds.to_json())
return creds
def reply_to_email(thread_id, message_text):
creds = get_credentials()
service = build('gmail', 'v1', credentials=creds)
# 获取特定线程的邮件列表
thread = service.users().threads().get(userId='me', id=thread_id).execute()
# 获取最新的邮件ID
message_id = thread['messages'][0]['id']
# 获取特定邮件的详细信息
message = service.users().messages().get(userId='me', id=message_id).execute()
# 构建回复邮件
reply = {
'threadId': thread_id,
'labelIds': message['labelIds'],
'raw': base64.urlsafe_b64encode(
f'From: {message["payload"]["headers"][0]["value"]}\n'
f'To: {message["payload"]["headers"][1]["value"]}\n'
f'Subject: Re: {message["payload"]["headers"][3]["value"]}\n\n'
f'{message_text}'.encode('utf-8')
).decode('utf-8')
}
# 发送回复邮件
service.users().messages().send(userId='me', body=reply).execute()
# 使用示例
thread_id = 'THREAD_ID'
message_text = '回复内容'
reply_to_email(thread_id, message_text)
以上代码示例使用Python编写,通过Gmail API回复指定thread_id的邮件。你需要将YOUR_CLIENT_ID
和YOUR_CLIENT_SECRET
替换为你在Google Cloud Console中创建的客户端ID和客户端密钥。确保已安装google-api-python-client
库,并将访问令牌保存在token.json
文件中。
领取专属 10元无门槛券
手把手带您无忧上云