欢迎访问宙启技术站
智能推送

Python中使用apiclient.discovery模块调用GmailAPI进行电子邮件管理

发布时间:2024-01-17 09:12:16

在Python中使用apiclient.discovery模块调用Gmail API进行电子邮件管理非常简单。下面是一个使用例子,包括设置身份验证、获取电子邮件列表、发送电子邮件和删除电子邮件等功能。

首先,你需要设置Gmail API的凭据,这包括一个OAuth 2.0的客户端ID和客户端密钥。你可以在Google Cloud Console中创建一个项目并启用Gmail API来获取这些凭据。

1. 安装google-api-python-client库:

pip install google-api-python-client

2. 导入所需的库:

from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow

3. 定义Gmail API的作用域和凭据:

SCOPES = ['https://www.googleapis.com/auth/gmail.readonly',
          'https://www.googleapis.com/auth/gmail.compose',
          'https://www.googleapis.com/auth/gmail.modify']

creds = None
if os.path.exists('token.json'):
    creds = Credentials.from_authorized_user_file('token.json', SCOPES)

4. 如果不存在有效的凭据,则从Google授权流中创建一个凭据:

if not creds or not creds.valid:
    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())

5. 构建Gmail API的服务:

service = build('gmail', 'v1', credentials=creds)

6. 获取电子邮件列表:

def list_emails():
    results = service.users().messages().list(userId='me').execute()
    messages = results.get('messages', [])
    for message in messages:
        msg = service.users().messages().get(userId='me', id=message['id']).execute()
        print('Subject:', msg['subject'])
        print('From:', msg['from'])
        print('Snippet:', msg['snippet'])

7. 发送电子邮件:

def send_email(to, subject, message_text):
    message = create_message_with_text(to, subject, message_text)
    message = service.users().messages().send(userId='me', body=message).execute()
    print('Message sent. Message Id:', message['threadId'])

8. 删除电子邮件:

def delete_email(message_id):
    service.users().messages().delete(userId='me', id=message_id).execute()
    print('Message deleted:', message_id)

9. 创建包含电子邮件详细信息的消息:

from email.mime.text import MIMEText
import base64

def create_message_with_text(to, subject, message_text):
    message = MIMEText(message_text)
    message['to'] = to
    message['subject'] = subject
    raw_message = base64.urlsafe_b64encode(message.as_bytes()).decode("utf-8")
    return {'raw': raw_message}

10. 调用上述功能:

list_emails()
send_email('recipient@example.com', 'Hello', 'This is a test email.')
delete_email('message_id')

以上是一个使用apiclient.discovery模块调用Gmail API进行电子邮件管理的示例。你可以根据自己的需要进行扩展和修改。详细的API文档可以在Google Developers网站上找到。