获取Gmail帐户附件的Python脚本可以使用Google的Gmail API来实现。以下是一个示例脚本:
import os
import base64
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
# 设置Google Cloud Platform项目的客户端ID和密钥
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
# 调用Gmail API需要授权的范围
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
# 用户授权,生成token.json文件保存访问令牌
def authorize():
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', 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.json', 'w') as token:
token.write(creds.to_json())
return creds
# 获取附件
def get_attachments():
creds = authorize()
service = build('gmail', 'v1', credentials=creds)
# 获取最新的邮件
response = service.users().messages().list(userId='me', maxResults=1).execute()
message_id = response['messages'][0]['id']
# 获取邮件详情
message = service.users().messages().get(userId='me', id=message_id).execute()
for part in message['payload']['parts']:
if part['filename']:
# 获取附件数据
attachment = service.users().messages().attachments().get(
userId='me', messageId=message_id, id=part['body']['attachmentId']
).execute()
# 将附件数据保存到本地文件
file_data = base64.urlsafe_b64decode(attachment['data'])
file_path = os.path.join('/path/to/save/attachment', part['filename'])
with open(file_path, 'wb') as f:
f.write(file_data)
if __name__ == '__main__':
get_attachments()
这个脚本使用了Google的Gmail API,首先需要在Google Cloud Platform创建一个项目并获取客户端ID和密钥。在脚本中的CLIENT_ID
和CLIENT_SECRET
变量中填入对应的值。
脚本中的SCOPES
变量定义了授权的范围,这里使用了Gmail的只读权限。
authorize()
函数用于进行用户授权,生成访问令牌并保存到token.json
文件中,以便下次使用。
get_attachments()
函数用于获取最新的邮件,并遍历邮件中的附件部分。通过Gmail API的users().messages().attachments().get()
方法可以获取附件的数据,然后将数据保存到本地文件。
在使用脚本之前,需要确保已安装google-auth
和google-api-python-client
这两个库。
腾讯云相关产品中,腾讯云提供了邮件推送服务(https://cloud.tencent.com/product/sms),可以结合Gmail API实现更丰富的邮件功能。
领取专属 10元无门槛券
手把手带您无忧上云